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

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



