消息分发的同步均衡策略

TimeTunnel在做消息分发时有这样一个场景:

A类消息需要做实时分析, 且量很大, 故它的消费者不会只是一台机器, 而是一组机器, 并要求这组中每台机器收到的消息量应该平均的,  即A消息在某个时刻有100条,  若有4台机器消费的话, 最佳的情况每台机器应收到25条.

这个场景就好比, 一个消息队列, 有多个线程并行消费, 如何保证每个消费线程获取的消息数量一样的.

解决它的切入点可能有两个:

  1. 消费线程拉的方式, 这就需要一个协调器,  来同步每个消费线程的进度, 即每个消费线程每次拉完都需要询问协调器是否可以继续;
  2. 单一线程推的方式, 创建一组与消费线程数量一致的二级队列(即每个消费线程仅从与之绑定的队列中取);  独立一个分派线程, 它从一级队列里取消息, 然后轮转的推给每个二级消费队列.

这两条思路各有优缺点, 要视系统在时间和空间上的取舍而定. TimeTunnel 选择了第一种方式, 实现分了三步...

更多内容, 请见http://www.tbdata.org/archives/1579.



已有 0 人发表留言,猛击->>这里<<-参与讨论


JavaEye推荐



转载于:https://my.oschina.net/zhongl/blog/13881

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值