首页
学习
活动
专区
工具
TVP
发布
技术百科首页 >Storm >Storm如何保证数据的可靠性?

Storm如何保证数据的可靠性?

词条归属:Storm

Storm通过几种机制来保证数据的可靠性:

数据流的元组(Tuple)跟踪

Storm会为每个元组分配一个唯一的ID,并跟踪其在整个处理过程中的状态。这使得Storm可以知道每个元组是否已经被成功处理。

锚定(Anchoring)

当Bolt处理一个元组时,它可以选择“锚定”这个元组。这意味着Bolt告诉Storm,它正在处理这个元组,并且如果处理失败,Storm应该重新发送这个元组。

确认(Acking)

当Bolt成功处理一个元组时,它会发送一个确认消息(ack)给Storm。当Storm收到这个确认消息时,它会知道这个元组已经被成功处理。

重播(Replay)

如果Storm没有在一定时间内收到一个元组的确认消息,它会认为这个元组的处理失败,并重新发送这个元组。这就是所谓的重播机制。

事务性Spout

Storm还提供了事务性Spout,它可以保证每个批次的数据只被处理一次。这是通过在每个批次的开始和结束发送特殊的元组来实现的。

相关文章
Storm 的可靠性保证测试
Storm是一个分布式的实时计算框架,可以很方便地对流式数据进行实时处理和分析,能运用在实时分析、在线数据挖掘、持续计算以及分布式 RPC 等场景下。Storm 的实时性可以使得数据从收集到处理展示在秒级别内完成,从而为业务方决策提供实时的数据支持。 在美团点评公司内部,实时计算主要应用场景包括实时日志解析、用户行为分析、实时消息推送、消费趋势展示、实时新客判断、实时活跃用户数统计等。这些数据提供给各事业群,并作为他们实时决策的有力依据,弥补了离线计算“T+1”的不足。 在实时计算中,用户不仅仅关心时效性的
美团技术团队
2018-03-12
1.2K0
Storm消息处理可靠性保证
Storm可以保证每一个从spout发出的消息能被完全处理。本章描述storm是如何完成这个保证以及用户如何从storm的可靠性能力获益的。 消息“完全处理”的含义 一个tuple从spout发出后可能会触发成千上万的tuple基于它而创建。以work count的topology为例考虑下: TopologyBuilder builder = new TopologyBuilder(); builder.setSpout("sentences", new KestrelSpout("kestrel.bac
囚兔
2018-02-08
9300
Kafka如何保证数据可靠性
即发送的数据根本没有保存到Broker端。出现这个情况的原因可能是,网络抖动,导致消息压根就没有发送到 Broker 端;也可能是消息本身不合格导致 Broker 拒绝接收(比如消息太大了,超过了 Broker 的承受能力)等等。
程序员酷森
2020-10-19
3.1K0
如何保证数据库的可靠性?
什么是可靠性?系统的可靠性表现为在一定期间内,用户可以预测其发生的行为,也就是说,在一定的期间内,系统不会发生计划外的行为。例如,服务器运行时不会出现意外的停机、应用程序的性能符合预期、计划的停机很少发生等等。
MySQLSE
2023-11-13
2640
[TCP/IP] TCP如何保证可靠性
1.数据包校验,发送方计算校验和,接收方结算校验和,进行对比 2.应答机制,seq序列号与ack确认号
唯一Chat
2019-09-10
6710
点击加载更多
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
领券