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接口定义其他的通信机制

Storm进程通信机制的更多相关文章

  1. Android 进程通信机制之 AIDL

    什么是 AIDL AIDL 全称 Android Interface Definition Language,即 安卓接口描述语言.听起来很深奥,其实它的本质就是生成进程间通信接口的辅助工具.它的存在 ...

  2. Qt 的内部进程通信机制

    Qt 的内部进程通信机制 续欣 (xxin76@hotmail.com), 博士.大学讲师 2004 年 4 月 01 日 Qt 作为一种跨平台的基于 C++ 的 GUI 系统,能够提供给用户构造图形 ...

  3. 图文详解 Android Binder跨进程通信机制 原理

    图文详解 Android Binder跨进程通信机制 原理 目录 目录 1. Binder到底是什么? 中文即 粘合剂,意思为粘合了两个不同的进程 网上有很多对Binder的定义,但都说不清楚:Bin ...

  4. Socket进程通信机制及应用

    Socket通常称为“套接字”,用于描述IP地址和端口,是一个通信链的句柄.应用程序通过套接字向网络发出请求或者应答网络请求.Socket即不是一个程序,也不是一个协议,其只是操作系统提供的通信层的一 ...

  5. Socket进程通信机制

    1.Socket通常称为“套接字”,用于描述IP地址和端口,是一个通信链的句柄. 2.应用程序通过套接字向网络发出请求或者应答网络请求. 3.Socket既不是一个程序,也不是一种协议,其只是操作系统 ...

  6. AIDL/IPC Android AIDL/IPC 进程通信机制——超具体解说及使用方法案例剖析(播放器)

    首先引申下AIDL.什么是AIDL呢?IPC? ------ Designing a Remote Interface Using AIDL 通常情况下,我们在同一进程内会使用Binder.Broad ...

  7. IPC进程通信机制

    select.poll.epoll之间的区别总结[整理] 进程间通信---共享内存 信号量和互斥锁的区别 http://www.2cto.com/os/201510/445553.html http: ...

  8. Aidl跨进程通信机制-android学习之旅(87)

    Aidl简介 AIDL (Android Interface Definition Language) 是一种IDL 语言,用于生成可以在Android设备上两个进程之间进行进程间通信的代码. 如果在 ...

  9. storm并发机制,通信机制,任务提交

    一.storm的并发 (1)Workers(JVMs):在一个物理节点上可以运行一个或多个独立的JVM进程.一个Topology可以包含一个或多个worker(并行的跑在不同的物理机上),所以work ...

随机推荐

  1. 如果你恨一个程序员 忽悠他去做iOS开发(戏谑篇)

    .state { text-align: right; height: 16px; line-height: 16px; color: #999; padding-top: 5px; overflow ...

  2. python非递归全排列

    刚刚开始学习python,按照廖雪峰的网站看的,当前看到了函数这一节.结合数组操作,写了个非递归的全排列生成.原理是插入法,也就是在一个有n个元素的已有排列中,后加入的元素,依次在前,中,后的每一个位 ...

  3. 【C语言训练】尼科彻斯定理

    题目描述验证尼科彻斯定理,即:任何一个正整数的立方都可以写成一串连续奇数的和. 输入任一正整数 输出该数的立方分解为一串连续奇数的和 样例输入13样例输出13*13*13=2197=157+159+1 ...

  4. Javascript学习笔记:闭包题解(1)

    代码: function createFunctions(){ var result=[]; for(var i=0;i<10;i++){ result[i]=function(){ retur ...

  5. DISCUZ官方论坛模仿开发日志(二)

    接上一次日志:http://www.cnblogs.com/gcs1995/p/4091159.html 从上次写下项目简要分析到现在差不多两个月时间了,这两个月时间学习了很多新技术: 数据库技术: ...

  6. Android异步任务机制之AsycTask

    在Android中实现异步任务机制有两种方式,Handler和AsyncTask. 本篇就说说AsyncTask的异步实现. 1.什么时候使用 AsnyncTask 在上一篇文章已经说了,主线程主要负 ...

  7. EChart和G2比较

    1.上市时间:EChart已经久经沙场,G2算是新事物 2.源码:截止发文,在Github上 数量 EChart G2 commits 3086 8 branches 3 1 releases 43 ...

  8. AndroidStudio NDK配置使用以及错误集合

    Error:Execution failed for task ':app:transformNative_libsWithStripDebugSymbolForDebug'. > java.l ...

  9. 【UE4+Vive】学习笔记1

    16.9.10为了做房产项目,这两天开始学习Unreal Engine 4.之前一直用unity,但是视觉效果一直不满意,听说虚幻4的效果更好,就来试一试水. 1.安装UE4 参考资料一: http: ...

  10. Ubuntu中由root用户修改为普通用户的办法

    比如你的普通用户名是test 目前是root用户 键入命令 su - test 就可以了