热图拓扑的实现与扩展
1. 组件间流分组的定义
在拓扑结构中,组件之间的连接方式有洗牌分组(shuffle grouping)和字段分组(fields grouping)两种。
- 洗牌分组 :用于将一个组件的输出元组随机且均匀地分发到下一个组件。
- 字段分组 :当需要确保选定字段值相同的元组总是发送到下一个螺栓(bolt)的同一个实例时使用。
对于签到(Checkins)/地理编码查找(GeocodeLookup)和热图构建器(HeatMapBuilder)/持久化器(Persistor)之间的流,洗牌分组就足够了。但从地理编码查找螺栓到热图构建器螺栓,需要将所有输出元组发送到热图构建器的一个特定实例,这时就需要全局分组(global grouping)。全局分组能确保所有元组都发送到热图构建器中任务 ID 最小的实例,这样就能方便地将元组按时间间隔分组。
也可以使用单个热图构建器螺栓实例并结合洗牌分组来达到相同效果,但使用全局分组更明确地传达了所需行为,且开销稍小。
2. 在本地集群模式下构建拓扑
为了在本地集群模式下运行拓扑,将代码拆分为两个类:一个用于构建拓扑,另一个用于运行拓扑。
以下是构建拓扑的代码:
public class HeatmapTopologyBuilder {
public StormTopology build() {
TopologyBuilder builder = new TopologyBui
超级会员免费看
订阅专栏 解锁全文
8

被折叠的 条评论
为什么被折叠?



