核心概念
- Topology
- Nimbus
- Supervisor
- Worker
- Executor
- Task
- Spout
- Bolt
- Tuple
- Stream
-
Stream Group
image.png
Spout/Bolt 工作示意图
image.pngStream 分组方式
-
Shuffle
image.png -
Fields
image.png -
All
image.png -
Global
image.png -
None
暂时类似于 Shuffle -
Direct
这是一种特殊的分组方式,也就是产生数据的Spout/Bolt
自己明确决定这个Tuple
被Bolt
的那些Task
所消费。如果使用这种分组凡是,需要使用OutputCollector
的emitDirect
方法来实现。 -
Local or shuffle
如果目标Bolt
中的一个或多个Task
和当前产生数据的Task
在同一个Worker
进程中,那么就走内部的线程间通信,将Tuple
直接发给在当前Worker
进程中的目标Task
。否则,同Shuffle
分组。
特性
-
易用性
开发人员只要定义自己的Topology/Spout/Bolt
就可以,不用关心底层RPC/Worker
之间冗余以及数据分流等操作。 -
容错性
Storm
的守护进程(Nimbus/Supervisor
)是无状态的,状态是保存在Zookeeper
中的,可以随意重启。 -
扩展性
通过配置并发数,实现线性扩展。 -
完整性
采用Acker
机制,保证数据不丢失。使用事务机制,保证数据的准确性。
网友评论