消息分发的同步均衡策略

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

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

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

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

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

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

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

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



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


JavaEye推荐
  • —软件人才免语言低担保 赴美带薪读研!—



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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/297297.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ssh长时间不操作便断开_连接SSH长时间不操作断开解决办法

经常连接ssh长时间不操作就断开&#xff0c;实在忍无可忍&#xff0c;每次都想解决这个问题&#xff0c;但是就是懒得搞&#xff0c;这次必须得一刀解决。解决方法一&#xff1a;服务器配置1、 连接SSHssh root192.168.0.1复制代码2、编辑sshd_configvim /etc/ssh/sshd_config复…

当下流行的直播技术demo演示

nginx-http-flv-module&#xff08;更新不是很频繁&#xff09; SRS: https://ossrs.net/lts/zh-cn/&#xff08;独立官网&#xff0c;目前最新稳定版version5&#xff09; 基于SRS搭建直播demo演示&#xff1a; 一、搭建流媒体服务器 参见官网&#xff1a;https://ossrs.ne…

SQL复制表

View Code --创建test_employee_info临时表结构&#xff0c;不保留关联关系select * into test_employee_info from employee_info where 1<>1;declare num intset num1while num<6begininsert into test_employee_info select employee_codepcast(num as varchar(1)…

Workflow Core + asp.net core 5.0 实现简单审批工作流

我们知道企业业务系统到处都可以审批工作流的&#xff0c;但也很少有像OA系统一样复杂多级多条件的审批工作流需要设计&#xff0c;所以我们需要一个轻量级的容易上手的workflow框架&#xff0c;通过GitHub,我发现danielgerlag/workflow-core 就非常合适&#xff0c;我下面我通…

python解析xml文件选用模块_python解析xml模块封装代码

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里技术人对外发布原创技术内容的最大平台&…

超1亿人选择朋友圈三天可见,背后的原因值得深思

全世界只有3.14 % 的人关注了爆炸吧知识每次翻看刚加好友的朋友圈时&#xff0c;都会对 ta 产生直观的判断。如果朋友圈很丰富&#xff0c;往往会觉得 ta 很有趣&#xff0c;会迫切想要和 ta 链接&#xff0c;而看到某些很单调的朋友圈&#xff0c;根本就没有深入沟通的欲望。真…

基于HTML5手机上下滑动翻页特效

基于HTML5手机上下滑动翻页特效。这是一款手机移动端触屏滑动翻页代码下载。效果图如下&#xff1a; 在线预览 源码下载 实现的代码。 html代码&#xff1a; <section class"u-alert"><img style"display:none;" src"images/loading_larg…

在Centos中yum安装和卸载软件的使用方法

在Centos中yum安装和卸载软件的使用方法安装方法安装一个软件时yum -y install httpd安装多个相类似的软件时yum -y install httpd*安装多个非类似软件时yum -y install httpd php php-gd mysql卸载一个软件时yum -y remove httpd卸载多个相类似的软件时yum -y remove httpd*卸…

.NET跨平台实践:.NetCore、.Net5/6 Linux守护进程设计

几年前&#xff0c;我写过两篇关于用C#开发Linux守护进程的技术文章&#xff0c;分别是《.NET跨平台实践&#xff1a;用C#开发Linux守护进程.NET跨平台实践&#xff1a;再谈用C#开发Linux守护进程 — 完整篇这就是本文的初衷。关于Linux Daemon程序的原理之类的&#xff0c;已经…

代码优化从数据库里查数据

今天写了几行代码&#xff0c;都是从一个表里查数据。而我却查了三次数据库&#xff0c; 代码例子如下&#xff1a; dalclass.GetLie("userName","Student","userId"id); dalclass.GetLie("userClass","Student","user…

一寸照纯红色底图片_和记场下载

新能的事普及棘手源汽依然情车的是件&#xff0c;为王花燃油但和比车相&#xff0c;为王花底解电池和记场下载在没决续基础建设高额问题航、有彻以及前充电成本&#xff0c;它的体量不大依旧&#xff0c;新能形成正在逐渐之势推广尽管局部源汽全球车的所以。第一直接兼老个家话…

学点css基础

中午时间学点css&#xff0c;附带http://www.w3cschool.cc/css/css-tutorial.html这个链接&#xff01; 中午的时间学了这些东西&#xff01;如下图: 附带代码&#xff1a; 1 <!DOCTYPE html>2 <html lang"en">3 <head>4 <meta charset&quo…

套套原来是这样装袋的,40个机械动图看懂好像并不容易。。。

今天咱们来多方位的展示机械的魅力1、真在的柔性自动包装线&#xff0c;可以同时实现一条线上多种不同物体的包装&#xff1a;好强大&#xff0c;美中不足的是没有防震包装&#xff0c;容易压坏商品。另外从视频上可以看出来纸板和物品一块出来&#xff0c;纸板出来时已经裁剪好…

python运算符号输入_【Python】【运算符】

【取模】所谓取模运算&#xff0c;就是计算两个数相除之后的余数&#xff0c;符号是%。如a % b就是计算a除以b的余数。用数学语言来描述&#xff0c;就是如果存在整数n和m&#xff0c;其中0 < m < b&#xff0c;使得a n * b m&#xff0c;那么a % b a - n * b m.取模…

云原生开发框架dapr环境搭建:CLI安装和初始化

dapr 是微软的一个云原生&#xff08;Cloud Native&#xff09;开源项目&#xff0c;英文全称&#xff1a;Distributed Application Runtime&#xff0c;中文要翻译的话就是&#xff1a;分布式应用运行时。也就是一个运行时框架&#xff0c;面向云原生架构。dapr官网地址&#…

java map 值排序_使用Java8 Stream API对Map类型按照键或值进行排序

在这篇文章中&#xff0c;您将学习如何使用Java对Map按照键或值进行排序。前几日有位朋友面试遇到了这个问题&#xff0c;看似很简单的问题&#xff0c;但是如果不仔细研究一下也是很容易让人懵圈的面试题。所以我决定写这样一篇文章。在Java中&#xff0c;有多种方法可以对Map…

GDB调试多进程|多线程程序

1. 默认设置下&#xff0c;在调试多进程程序时GDB只会调试主进程。但是GDB&#xff08;>V7.0&#xff09;支持多进程的分别以及同时调试&#xff0c;换句话说&#xff0c;GDB可以同时调试多个程序。只需要设置follow-fork-mode(默认值&#xff1a;parent)和detach-on-fork&a…

Informatica bulk与normal模式的深入详解(转)

Bulk 方式进行目标数据的Load&#xff0c;是Informatica提供的一种高性能的Load数据方式。它利用数据库底层机制&#xff0c;依靠调用数据库本身提供的Utility来进行数据的加载。 使用Bulk方式 Load时&#xff0c;Informatica调用Utility进行Load&#xff0c;此方式将绕过数据库…

php学习 基础二

常用流程控制 IF语句的使用 if&#xff08;判断语句&#xff09; { 执行语句体 } 判断语句 &#xff1a;逻辑运算符号 值非0&#xff0c;执行语句 IF ELSE 语句使用 if&#xff08;判断语句&#xff09; { 执行语句体1 } else { …

沙漠上不小心挖了个洞,让这个地狱之门般的巨坑,燃烧了50年

全世界只有3.14 % 的人关注了爆炸吧知识在土库曼斯坦的卡拉库姆沙漠深处&#xff0c;有一个神奇的巨坑&#xff0c;直径约为70米&#xff0c;它无论白天还是黑夜&#xff0c;永远都在燃烧。这个坑的周围一片荒芜&#xff0c;坑里也没有任何明显在助燃的东西但坑内燃烧的大火近5…