博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Storm进程通信机制
阅读量:5311 次
发布时间:2019-06-14

本文共 921 字,大约阅读时间需要 3 分钟。

 

storm的worker进程之间消息传递机制图:

 

每个worker都有一个独立的监听进程,监听配置文件中配置过的端口列表supervisor.slots.ports,topology.receiver.buffer.size代表接收线程一次最多能接收多少条消息,用户可以自定义配置。接收线程将收到的消息传递给对应的executor(一个或多个)的incoming-queues。对应接收线程,每个worker存在一个独立的发送线程,它负责从worker的transfer-queue中读取消息,并通过网络发送给其他worker,transfer-queue的大小由参数topology.transfer.buffer.size来设置。transfer-queue的每个元素实际上代表一个tuple的集合,当executor的outgoing-queue中的tuple达到一定的阀值,executor的发送线程将批量获取outgoing-queue中的tuple,并发送到transfer-queue中。

每个worker进程控制一个或多个executor线程,用户可在代码中进行配置。每个executor有自己的incoming-queue和outgoing-queue。一个worker进程运行一个专用的接收线程来负责将外部发送过来的消息移动到对应的executor线程的incoming-queue中,executor中的发送线程在outgoing-queue到达一定的阀值后,将outgoing-queue中的消息批量发送给所在worker的transfer-queue。executor的incoming-queue和outgoing-queue的大小用户可以自定义配置。每个executor有单独的线程分别来处理spout/bolt的业务逻辑和从outgoing-queue消费数据并发送到transfer-queue中。

源码可参考:TaskTransfer.java

可以通过实现IContext接口定义其他的通信机制

转载于:https://www.cnblogs.com/harlenzhang/p/5544960.html

你可能感兴趣的文章
模块搜索路径
查看>>
如何成为一名优秀的程序员?
查看>>
HDU(4528),BFS,2013腾讯编程马拉松初赛第五场(3月25日)
查看>>
C++期中考试
查看>>
Working with Characters and Strings(Chapter 2 of Windows Via C/C++)
查看>>
vim中文帮助教程
查看>>
Android 创建与解析XML(四)—— Pull方式
查看>>
CodeForces 411B 手速题
查看>>
同比和环比
查看>>
美国在抛弃慕课,中国却趋之若鹜
查看>>
SpringMvc拦截器运行原理。
查看>>
MySQL基础3
查看>>
云计算数据与信息安全防护
查看>>
全局设置导航栏
查看>>
RxJS & Angular
查看>>
面向对象(多异常的声明与处理)
查看>>
MTK笔记
查看>>
ERROR: duplicate key value violates unique constraint "xxx"
查看>>
激活office 365 的启动文件
查看>>
9款免费的Windows远程协助软件
查看>>