1 storm如何禁止失败情况下重发
问题描述:因为测试 造了一个错误数据,
造成同一个记录会被反复的重新发送 死循环在哪里 造成无法处理
下一个请求 大量failed
原因分析:
一个任务标记是失败的时候会重新发送 造成死循环
strom消息处理3个方式
1 at-most-once:spout针对相同的tuple只发送一次即可,不需要实现fail和ack方法
2 at-least-once:是用acker机制实现的
3 exactly-once:使用storm的高级部分trident实现
检查代码采用方式 2
发现异常数据 我标记this.collector.faild(input) 继续处理
此时应该标记成功就可以了this.collector.ack(input)
参考
- Using pipelining to speedup Redis queries
官方介绍 http://redis.io/topics/pipelining
http://www.blogways.net/blog/2013/06/02/jedis-demo.html
http://www.jianshu.com/p/5e12556a0aa9
-ack机制
https://tech.meituan.com/test-of-storms-reliability.html
http://www.cnblogs.com/foreach-break/p/storm_at_least_once.html
http://blog.csdn.net/cjfeii/article/details/47152653
http://blog.csdn.net/tototuzuoquan/article/details/73539952
-KafkaSpout实现ack机制
http://www.cnblogs.com/intsmaze/p/5947078.html