7、实时流处理:Storm与Trident的深入解析

实时流处理:Storm与Trident的深入解析

1. Storm Acking框架

在理解了Storm的可靠性之后,我们来探讨确保所有关于确认(ack)或失败(fail)的更新都能成功到达Spout的重要组件——Acker进程。Acker进程是与Spout和Bolt共存的轻量级任务,负责将所有成功执行的消息确认信息发送给Spout。其数量由Storm配置中的 TOPOLOGY_ACKER_EXECUTORS 属性控制,默认情况下,它等于拓扑中定义的工作进程数量。
- 对于低TPS(每秒事务数)的拓扑,应减少Acker的数量。
- 对于高TPS的拓扑,则应增加Acker的数量,以确保元组能以到达和处理的速率被确认。

Acker使用以下算法来跟踪通过拓扑播放的每个元组的元组树的完成情况:
1. 维护一个校验和哈希。
2. 对于每个执行的元组,将其与校验和哈希的值进行异或运算。
3. 如果元组树中的所有元组都被确认,校验和将为0;否则,它将是一个非零值,后者表示拓扑中存在失败。

其工作很大程度上由Tick元组驱动和控制。

2. Storm简单模式

在使用Storm时,有多种常见模式,下面介绍两种不使用Trident的常见模式。

2.1 连接(Joins)

连接是最常见的模式,它将两个或多个不同流的输出在某个公共字段上进行连接,并作为单个元组发出。在Storm中,通过字段分组(fields grouping)可以有效地实现这一点,确保具有相同字段值的所有元组都被发送到同一个任务。示例代码如下:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值