2019独角兽企业重金招聘Python工程师标准>>>
TimeTunnel在做消息分发时有这样一个场景:
A类消息需要做实时分析, 且量很大, 故它的消费者不会只是一台机器, 而是一组机器, 并要求这组中每台机器收到的消息量应该平均的, 即A消息在某个时刻有100条, 若有4台机器消费的话, 最佳的情况每台机器应收到25条.
这个场景就好比, 一个消息队列, 有多个线程并行消费, 如何保证每个消费线程获取的消息数量一样的.
解决它的切入点可能有两个:
- 消费线程拉的方式, 这就需要一个协调器, 来同步每个消费线程的进度, 即每个消费线程每次拉完都需要询问协调器是否可以继续;
- 单一线程推的方式, 创建一组与消费线程数量一致的二级队列(即每个消费线程仅从与之绑定的队列中取); 独立一个分派线程, 它从一级队列里取消息, 然后轮转的推给每个二级消费队列.
这两条思路各有优缺点, 要视系统在时间和空间上的取舍而定. TimeTunnel 选择了第一种方式, 实现分了三步...
更多内容, 请见http://www.tbdata.org/archives/1579.
已有 0 人发表留言,猛击->>这里<<-参与讨论
JavaEye推荐
- —软件人才免语言低担保 赴美带薪读研!—