社区
Java
帖子详情
2020-08-06:现有一批邮件需要发送给订阅顾客,且有一个集群(集群的节点数不定,会动态扩容缩容)来 负责具体的邮件发送任务,如何让系统尽快地完成发送? 请
福大大架构师每日一题
2020-08-06 07:22:32
2020-08-06:现有一批邮件需要发送给订阅顾客,且有一个集群(集群的节点数不定,会动态扩容缩容)来 负责具体的邮件发送任务,如何让系统尽快地完成发送? 请详述技术方案!
...全文
6559
2
打赏
收藏
2020-08-06:现有一批邮件需要发送给订阅顾客,且有一个集群(集群的节点数不定,会动态扩容缩容)来 负责具体的邮件发送任务,如何让系统尽快地完成发送? 请
2020-08-06:现有一批邮件需要发送给订阅顾客,且有一个集群(集群的节点数不定,会动态扩容缩容)来 负责具体的邮件发送任务,如何让系统尽快地完成发送? 请详述技术方案!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hashcon
2020-08-06
打赏
举报
回复
这个问题解决方案很多,主要要考虑: 1. 动态任务分配:例如如果是先分配好,后执行的话,那么在执行发邮件的时候,加入节点,没法分摊压力 2. 任务补偿:如果某个节点挂了,分配给这个节点的任务,需要其他节点执行。 3. 如果可以使用中间件的话,那么各种MQ的集群消费模式,是比较好的方案。这个集群中节点可以动态添加,删除,每个消息只在某个节点消费一次。只有发邮件成功,消费才算完成,这样补偿也有了。 不能使用中间件,可以采用分配者,执行者模式,或者master-slave模式,动态根据当前集群节点数分配任务执行。如何分配,可以: 1.任务id哈希对于节点个数取模 2.一致性哈希分配 如何执行: 1.同步调用,调用slave或者执行者接口,发送成功返回。吞吐量比较差,任务堆积在分配者或者master这里,耗费资源多。 2. 异步调用,调用slave分配任务立刻返回,slave真正发送前,加分布式锁,查询数据库这个任务是否发送完成,如果没发送则发送后更新数据库。假设发邮件接口最大响应时间是10s,那么master可以考虑一个任务经过30s(大于十秒,不要过于接近)以上时间,就可以补偿这个任务重新分配。
明白畅达
2020-08-06
打赏
举报
回复
使用消息中间件吧,比如rabbitMQ,kafka这种,把用户的id(唯一id)作为路由key,路由模式推送
2020
-
08
-
06
:
现有
一批
邮件
需要
发送
给
订阅
顾客
,且有
一个
集群
(
集群
的
节点
数
不定
,
会
动态
扩容
缩容
)来
负责
具体
的
邮件
发送
任务
,如何让
系统
尽快
地
完成
发送
?
请
详述技术方案!
福哥答案
2020
-
08
-
06
: 参考答案: A.借助消息中间件,通过发布者
订阅
者模式来进行
任务
分配 B.master-slave 部署,由master 来分配
任务
C.不借助任何中间件,且所有
节点
均等。通过
数
据库的 update returning,从而...
现有
一批
邮件
需要
发送
给
订阅
顾客
,且有
一个
集群
(
集群
的
节点
数
不定
,
会
动态
扩容
缩容
)来
负责
具体
的
邮件
发送
任务
,如何让
系统
尽快
地
完成
发送
?
题目:
现有
一批
邮件
需要
发送
给
订阅
顾客
,且有
一个
集群
(
集群
的
节点
数
不定
,
会
动态
扩容
缩容
)来
负责
具体
的
邮件
发送
任务
,如何让
系统
尽快
地
完成
发送
?
请
详述技术方案! 参考答案: A. 借助消息中间件,通过发布者...
java基础巩固-宇宙第一AiYWM:为了维持生计,手写RPC~Version
08
(借鉴Dubbo源码、gRPC源码、京东何小锋老师开源的RPC框架、Mini RPC、性能优化)能学多少是多少~整起
java基础巩固-宇宙第一AiYWM:为了维持生计,手写RPC~Version
08
RPC的再总结与前景扩展~注册中心、负载均衡的实现以及
订阅
与发布~借鉴Dubbo整起
rocketMQ —— 02(
集群
搭建、rocketmq工作原理)
目录标题一、相关推荐二、基本架构图:三、
集群
模式 一、相关推荐 rocketMQ —— 01(前言、安装、基础概念) 二、基本架构图: 三、
集群
模式 三种发消息的模式: 单向
发送
,异步
发送
,同步
发送
流量消峰、消息分发...
2021-02-
08
(元素插入时使用的是尾插法) >HashMap在put的时候,插入的元素超过了容量(由负载因子决定)的范围就
会
触发
扩容
操作,就是rehash,这个
会
重新将原
数
组的内容重新hash到新的
扩容
数
组中,在多线程的环境下,存在同时...
Java
50,528
社区成员
85,607
社区内容
发帖
与我相关
我的任务
Java
Java相关技术讨论
复制链接
扫一扫
分享
社区描述
Java相关技术讨论
java
spring boot
spring cloud
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章