STORM_0010_Message passing implementation/消息传递的实现
- Worker为消息传递负责
- 当zk中的任务出现了变化或者每个task.refresh.poll.secs都会调用refresh-connections。这个东西管理和其他的worker的连接,并且维护一个映射:task->worker
- 提供一个transfer函数,被tasks用来发送tuples给其他的tasks。这个转移函数传入参数是task id和一个tuple,它会序列化一个tuple并且把它放入一个transfer queue。每一个worker只有一个队列。
- 序列化是线程安全的。
- worker使用单线程从队列中取出消息发送给其他的worker。
- 消息发送遵循一定的协议
- 分布式的实现是使用ZeroMQ
- 本地模式的实现是使用内存的java queues
- tasks接收消息的实现在本地模式和分布式模式是不一样的
- 在本地模式,tuple直接被发送到内存队列中
- 在分布式模式中,每一个worker监听一个唯一的tcp端口,等待传入信息,然后路由这些信息从内存到tasks,这些tcp端口称为virtual port,因为它接收[task id,message],然后路由它到真实的task中。
- tasks监听内存ZeroMQ端口等待从虚拟端口来的消息
- tasks为消息路由负责。一个tuple要么被发送到一个direct stream(这个task id被声明了),要么去一个regular流。在direct流中,只有bolt订阅了direct stream的时候消息才发送。在regular stream中,流分组函数被使用来决定tuple发送给哪个task id。
- tasks有一个路由对应:{stream id}->{commponent id}->{stream grouping function}
- 无论是direct还是regular,task-fn都返回要发送tuple的task id
- 获取输出的task id之后,bolts和spouts使用worker提供的transfer-fn完成实际的传递tuple的工作
- AssignableMetric:设置metric为你提供的精确的数值。如果是个外面的值就很方便了,或者在你自己计算出统计信息的情况下。
- CombinedMetric:是测量的通用接口可以同步升级。
- CountMetric:给定值的running total。调用inrc()函数加1,incrBy(n)增加到指定的数值
- MultiCountMetric:CountMetric的hashmap
- ReducedMetric
- MeanReducer:跟踪运行时平均值交给自己的reduce()方法
- MultiMeanReducer:MeanReducer的hashmap
STORM_0010_Message passing implementation/消息传递的实现的更多相关文章
- 现在的 Linux 内核和 Linux 2.6 的内核有多大区别?
作者:larmbr宇链接:https://www.zhihu.com/question/35484429/answer/62964898来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转 ...
- 【 2013 Multi-University Training Contest 6 】
HDU 4655 Cut Pieces 假设n个数构成的总数都分成了n段,总数是n*a1*a2*...*an.但是答案显然不会那么多. 对于相邻的两个ai,ai+1,如果选择相同的颜色,那么就减少了a ...
- 记得12306货运系统“抢购空”编写插件--chrome交互式插件的各个部分
--chrome交互式插件的各个部分 Chrome插件的基础知识就不多说了.随便找个新手教程就能够上手了,比如官方提供的Overview与Getting Started教程足够入门了:笔者也是现学现卖 ...
- ML平台_PAI参考
阿里云机器学习PAI(Platform of Artificial Intelligence)是一款一站式的机器学习平台,包含数据预处理.特征工程.常规机器学习算法.深度学习框架.模型的评估以及预测这 ...
- [Distributed ML] Yi WANG's talk
王益,分布式机器学习的践行者,他的足迹值得后来者学习. 膜拜策略: LinkedIn高级分析师王益:大数据时代的理想主义和现实主义(图灵访谈)[心路历程] 分布式机器学习的故事-王益[历史由来] 分布 ...
- 论文解读(KP-GNN)《How Powerful are K-hop Message Passing Graph Neural Networks》
论文信息 论文标题:How Powerful are K-hop Message Passing Graph Neural Networks论文作者:Jiarui Feng, Yixin Chen, ...
- objc_msgSend消息传递学习笔记 – 消息转发
该文是 objc_msgSend消息传递学习笔记 – 对象方法消息传递流程 的基础上继续探究源码,请先阅读上文. 消息转发机制(message forwarding) Objective-C 在调用对 ...
- Objective-c中的对象间的消息传递以及消息路由
刚开始使用Objective-C时,总是习惯将对象间发送消息之间称呼为方法调用.心想,这和c#不是一回事吗?不就是调用实例方法吗,还搞个消息发送作甚,最后还不是要转化为方法的调用?通过一段时间的理解学 ...
- objc_msgSend消息传递学习笔记 – 对象方法消息传递流程
在Effective Objective-C 2.0 – 52 Specific Ways to Improve Your iOS and OS X Programs一书中,tip 11主要讲述了Ob ...
随机推荐
- linux设备驱动归纳总结(九):1.platform总线的设备和驱动【转】
本文转载自:http://blog.chinaunix.net/uid-25014876-id-111745.html linux设备驱动归纳总结(九):1.platform总线的设备和驱动 xxxx ...
- [转]System.Reflection.AssemblySignatureKeyAttribute
转自:http://www.cnblogs.com/ego/p/3321122.html 错误: Could not load type 'System.Reflection.AssemblySign ...
- CentOS 7 更新源 – 使用国内 163 yum 源
突然想起试试 Docker,在一台计算机上安装了 CentOS 7,准备开工,突然想起还需要做一件事情,更改源,不然安装肯定会很慢,网上搜索了一下,文章很多,但是会出一些问题,所以将自己的成功的日志写 ...
- MySQL Replication的Reset slave重置命令
有时要清除从库的所有复制信息,如切换为不同的Master, 主从重做等:Reset slave是一个比较危险的命令,所以在执行前一定要准备知道其含义. 1. 命令在slave上执行,执行前一定要停掉s ...
- 使用BBCP来提升跨互联网的数据传输速度
背景介绍: 目前项目在美国东西部以及欧洲都有服务器节点,跨互联网的数据传输速度很不稳定,之前我们主要是通过SCP以及Rsync等方式进行数据传输的. 无意间发现了BBCP这个软件之后,经过测试,效果非 ...
- Linux CentOS 6.5 yum安装MongoDB的操作
安装MongoDB的方法有很多种,可以源代码安装,在CentOS也可以用yum源安装的方法.由于MongoDB更新得比较快,我比较喜欢用yum源安装的方法.64位CentOS下的安装步骤如下: 1.准 ...
- Python time clock()方法
描述 Python time clock() 函数以浮点数计算的秒数返回当前的CPU时间.用来衡量不同程序的耗时,比time.time()更有用. 这个需要注意,在不同的系统上含义不同.在UNIX系统 ...
- 【转】利用xcode生成的app生成可以在iphone和itouch上运行的ipa安装包
转载地址:http://blog.csdn.net/yohunl/article/details/5971252 在编译好的真机版目录下的.app文件,至于生成真机可以运行的app的方法,有两种方式, ...
- R cannot be resolved to a variable问题
在调试android的时候,layout解析都正确,但是build project的时候提示" R cannot be resolved to a variable " 经过查找, ...
- Capturing Audio & Video in HTML5
使用HTML5抓取 Audio & Video 原文地址: http://www.html5rocks.com/en/tutorials/getusermedia/intro/ 本地化的文章: ...