None Grouping、Direct Grouping 和LocalOrShuffle Grouping 最不常用三种分组
None Grouping: 不关注并行处理负载均衡策略时使用该方式,目前等同于Shuffle Grouping,另外Storm将会把bolt任务和他的上游提供数据的任务安排在同一个线程下。
Direct Grouping:由Tuple的发射单元直接决定Tuple将发射给那个Bolt,一般情况下是由接收Tuple的Bolt决定接收哪个Bolt发射的Tuple。这是一种比较特别的分组方法,用这种分组意味着消息的发送者指定由消息接收者的哪个task处理这个消息。
只有被声明为Direct Stream的消息流可以声明这种分组方法。而且这种消息Tuple必须使用emitDirect方法来发射。
消息处理者可以通过TopologyContext来获取处理它的消息的taskid (OutputCollector.emit方法也会返回taskid)
LocalOrShuffle Grouping:如果目标Bolt在同一工作进程存在一个或多个任务,元组会随机分配给这些任务。否则,该分组方式与随机分组方式是一样的。