标签:实现 第一个 ast 运行 没有 img 版权 分析 action
作者: xumingming | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明
网址: http://xumingming.sinaapp.com/811/twitter-storm-code-analysis-coordinated-bolt/
关于Twitter Storm的新特性: Transactional Topology 被问到的最多的问题是: Storm是怎么知道一个Bolt处理完成了它所有的tuple的? 其实要做到这一点还是有蛮多事情要做的, 幸运的是Storm已经提供了一个Bolt,帮我们把这些事情都做掉了。这个牛逼的bolt就是
CoordinatedBolt . 重要的是 CoordinatedBolt
的实现也是在storm的原语:spout, bolt这些基础之上的 — 也就是说即使作者不提供,我们自己也可以实现。我们来看看这个类的实现原理。
虽然CoordinatedBolt所发挥的作用很牛逼,但是其实它的原理并不是很复杂。它现在被用在两个场景里面:
在看 CoordinatedBolt
的原理之前,我们先看看到底什么叫”处理完了”, 到底处理完什么了?
其实CoordinatedBolt对于业务不是完全没有侵入的,要使用CoordinatedBolt提供的功能,你必须要保证你的每个bolt发送的每个tuple的第一个field是 request-id
, 那么所谓的”做完了”的意思是说当前这个bolt对于当前这个”request-id”所需要做的工作做完了。 这个 request-id
在 DRPC
里面代表一个DRPC请求;在Transactional Topology里面代表一个batch.
CoordinatedBolt的原理是这样的:
具体原理如下图:
正如我们在上面讨论到底什么叫”做完成”的概念的时候,我们说了, CoordinatedBolt
的使用对于业务是有侵入的:你必须要在你的每个tuple的第一个字段带上当前 request-id
, 否则 CoordinatedBolt
就跟踪不了了。 一种更优雅的方式是网络协议栈里面IP, TCP协议的处理方式。IP包在TCP包的外面包上IP层需要的信息,而不要求把IP层需要的信息掺杂在TCP的包字段里面,TCP层在发送数据的时候只组装TCP的那些字段,到了IP层自动加上IP层的信息。而IP层把数据包传给TCP层之前也自动去掉IP层的那些信息,TCP只会看到自己层的那些字段,毫无侵入。。作者对于这个问题提了一些改进的措施在 这里
Storm入门(十一)Twitter Storm源代码分析之CoordinatedBolt
标签:实现 第一个 ast 运行 没有 img 版权 分析 action
原文地址:http://www.cnblogs.com/hd3013779515/p/6999124.html