storm消息保障系统

保证消息处理结论:
1、通过acker进行消息保障处理机制
消息从spout发出后,可以对消息进行massid设置,massid和tuple同时保存在acker中
消息处理完成后acker就会消除对此massid的存储若消息处理失败,改消息将会被重新发送;

2、massid设置为时间戳后,真是返回的消息ID却是这样的8070785242661333289=-9191322617433518997,
可见自动会对消息id进行从新改造

3、可以指定acker的数量对使用还是不使用消息保障机制进行设置,acker的数量进行消息保障优化
4、某些进程死亡后消息的处理
由于任务已死,所以未确认元组:在这种情况下,失败元组在树根处的喷嘴元组id将超时并被重播。
Acker任务死了:在这种情况下,acker跟踪的所有喷嘴元组将超时并重播。
喷口任务死亡:在这种情况下,喷口与之交谈的源负责重播消息。例如,当客户端断开连接时,诸如Kestrel和RabbitMQ的队列会将所有待处理的消息放回队列。

5、单tuple铆钉:_collector.emit(tuple, new Values(word));
6、多tuple铆钉:
List anchors = new ArrayList();
anchors.add(tuple1);
anchors.add(tuple2);
_collector.emit(anchors, new Values(1, 2, 3));

故障问题
worker死亡时会发生什么?
worker死亡时,主管将重新启动。如果它在启动时连续失败,并且无法向Nimbus发出心跳信号,则Nimbus将重新安排工作程序的时间。

节点死亡时会发生什么?
分配给该计算机的任务将超时,Nimbus将把这些任务重新分配给其他计算机。

Nimbus或Supervisor守护程序死后会发生什么?
Nimbus和Supervisor守护程序设计为快速故障(遇到任何意外情况时都会自毁)和无状态(所有状态都保存在Zookeeper或磁盘中)。如设置Storm集群中所述,必须使用daemontools或monit之类的工具在Nimbus和Supervisor守护程序的监督下运行。因此,如果Nimbus或Supervisor守护程序死了,它们将重新启动,就像什么都没有发生一样。

最值得注意的是,没有任何工作流程受到Nimbus或主管死亡的影响。这与Hadoop相反,在Hadoop中,如果JobTracker死亡,所有正在运行的作业都会丢失。

Nimbus是单点故障吗?
如果您丢失了Nimbus节点,则工作线程仍将继续运行。此外,主管将在工人死亡后继续重启他们。但是,如果没有Nimbus,则在必要时不会将工作人员重新分配到其他计算机上(例如,如果您丢失了工作计算机)。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值