不多说,直接上干货!

storm的设计思想

  在 Storm 中也有对流(Stream)的抽象,流是一个不间断的、无界的连续 Tuple(Storm在建模事件流时,把流中的事件抽象为 Tuple 即元组)。Storm 认为每个流都有一个 Stream 源,也就是原始元组的源头,所以它将这个源头抽象为 Spout, Spout 可能连接 Twitter API 并不断发出推文( Tweet),也可能从某个队列中不断读取队列元素并装配为 Tuple 发射。
  有了源头即 Spout 也就是有了流,同样的思想, Twitter 将流的中间状态转换抽象为Bolt, Bolt 可以消费任意数量的输入流,只要将流方向导向该 Bolt,同时它也可以发送新的流给其他 Bolt 使用,这样一来,只要打开特定的 Spout(管口),再将 Spout 中流出的 Tuple导向特定的 Bolt,由 Bolt 处理导入的流后再导向其他 Bolt 或者目的地。
  假设 Spout 就是一个一个的水龙头,并且每个水龙头里流出的水是不同的,想获得哪种水就拧开哪个水龙头,然后使用管道将水龙头的水导向到一个水处理器(Bolt),水处理器处理后使用管道导向另一个处理器或者存入容器中。图 1 和图 2 为 Spout、 Tuple 和 Bolt 之间的关系和流程。
          

                      图 1    Spout、 Bolt 顺序处理数据流图

            

                        图2    Bolt 多输入数据流图

  

  为了增大水处理效率,可以在同一个水源处接上多个水龙头并使用多个水处理器,如图 3 所示。
                   

                    图 3  多 Spout、多 Bolt 处理流程图

  对应上文的介绍,可以很容易地理解图 3,这是一张有向无环图。 Storm 将这个图抽象为 Topology(即拓扑),拓扑是 Storm 中最高层次的一个抽象概念,提交拓扑到 Storm 集群执行,一个拓扑就是一个流转换图。图中的每个节点是一个 Spout 或者 Bolt,图中的边是指Bolt 订阅了哪些流

最新文章

  1. NC6开发配置流程
  2. 序列化多个form表单内容同时提交
  3. 用python实现的百度音乐下载器-python-pyqt-改进版
  4. 免费馅饼——G
  5. css技术
  6. SQL查询中in、exists、not in、not exists的用法与区别
  7. [转]Linux系统中‘dmesg’命令处理故障和收集系统信息的7种用法
  8. 浅谈JavaScript中的Ajax
  9. Reachability(判断网络是否连接)
  10. 查看.NET Service Pack版本
  11. Check list
  12. Vue.2.0.5-模板语法
  13. Mysql ibdata 丢失或损坏如何通过frm&ibd 恢复数据
  14. HDU 3533 Escape BFS搜索
  15. JavaScript Iframe富文本编辑器中的光标定位
  16. try{}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会 不会被执行,什么时候被执行,在 return 前还是后?
  17. C# Socket网络编程
  18. mac下Android开发环境的配置
  19. Java 自定义注释@interface的用法
  20. win10的cmd中显示:telnet不是内部或外部命令也不是可运行的程序或批处理?

热门文章

  1. [快手(AAuto)学习笔记]如何让程序在运行时请求管理员权限(UAC)
  2. AVI编码器
  3. css+div制作圆角矩形的四种方法
  4. Socket对象以及异常
  5. [凸包]Triangles
  6. 使用showInputDialog显示输入框
  7. Pig FOREACH 嵌套循环
  8. Linux网络编程组播测试代码
  9. 21. CTF综合靶机渗透(十四)
  10. 7.31实习培训日志-docker sql