Storm消息可靠机制
一:介绍
1.介绍
默认情况是,Spout每获取一条数据,封装后发送给后面的组件,不再管后面是否处理完成或成功接收,不再考虑。
这种的情况是不用太精确,没有启用可靠性消息机制。
2.方面的体现
spout组件
bolt组件
ack机制
二:Spout组件
1.发送Tuple,给每个tuple设置一个msgId(用来标识、追踪)
重载emit()方法。
2.使用内存缓存已经发射过的tuple
首先新建缓存
在open中初始化缓存
保存到缓存
3.ack方法(成功)
如果消息发送成功后的处理
4.fail的处理
在conf(map类型)中设置最大的重发次数,方面后面的进行获取
在spout类中的初始化中获得次数
新建已经重发的次数的内存(在初始化的时候初始化即可)
fail方法
这里一开始有一个hasSendTuples.containKey(msgId)的判断,因为后面后面需要在这个Map中取值,所以需要先判断。
三:测试spout
1.超时时间的设置
设置的是1秒。
意思是1秒内后面没有处理,就是说明发送失败。
2.测试结果
因为在Bolt没有处理成功的Tuple,所以,在这里显示的只会是失败的返回信息。
四:Bolt设置
1.确认ack
2.构造ack树(锚定)
就是一个Tuple衍生的Tuple都成功,才表示这个tuple被处理成功。
接受过来的input,与将要发送的new Values(word)绑定起来。
五:测试
1.超时时间设定
使用默认时间,30秒
2.结果
六:Acker组件
1.介绍
这个组件与Spout与Bolt同级。
在使用消息可靠性保证的时候,的确认组件。
也是使用executor来进行执行。
2.注意
当启用消息可靠性保障机制的时候,运行性能明显下降。
调整acker组件运行的executor线程数量来优化。
config.setNumAckers(4);
这样就是每个Spout或者Bolt一个execute、
但是具体是几个,需要进行测试。
Storm消息可靠机制的更多相关文章
- Storm消息可靠处理机制
在很多应用场景中,分布式系统的可靠性保障尤其重要.比如电商平台中,客户的购买请求需要可靠处理,不能因为节点故障等原因丢失请求:比如告警系统中,产生的核心告警必须及时完整的知会监控人员,不能因为网络故障 ...
- Storm消息容错机制(ack-fail机制)
storm消息容错机制(ack-fail) 1.介绍 在storm中,可靠的信息处理机制是从spout开始的. 一个提供了可靠的处理机制的spout需要记录他发射出去的tuple,当下游bolt处理t ...
- ActiveMQ的JMS消息可靠机制
JMS消息可靠机制 ActiveMQ消息签收机制: 客戶端成功接收一条消息的标志是一条消息被签收,成功应答. 消息的签收情形分两种: 1.带事务的session 如果session带有事务,并且事务成 ...
- storm 消息确认机制及可靠性
worker进程死掉 在一个节点 kill work进程 比方 kill 2509 对work没有影响 由于会在其它节点又一次启动进程运行topology任务 supervisor进程死掉 supe ...
- JMS消息可靠机制
ActiveMQ消息签收机制: 客戶端成功接收一条消息的标志是一条消息被签收,成功应答. 消息的签收情形分两种: 1.带事务的session 如果session带有事务,并且事务成功提交,则消息被自动 ...
- Storm学习笔记 - 消息容错机制
Storm学习笔记 - 消息容错机制 文章来自「随笔」 http://jsynk.cn/blog/articles/153.html 1. Storm消息容错机制概念 一个提供了可靠的处理机制的spo ...
- storm - 可靠机制
一 可靠性简单介绍 Storm的可靠性是指Storm会告知用户每个消息单元是否在一个指定的时间(timeout)内被全然处理. 全然处理的意思是该MessageI ...
- Storm编程入门API系列之Storm的可靠性的ACK消息确认机制
概念,见博客 Storm概念学习系列之storm的可靠性 什么业务场景需要storm可靠性的ACK确认机制? 答:想要保住数据不丢,或者保住数据总是被处理.即若没被处理的,得让我们知道. publi ...
- Rabbitmq可靠消息投递,消息确认机制
前言 我们知道,消息从发送到签收的整个过程是 Producer-->Broker/Exchange-->Broker/Queue-->Consumer,因此如果只是要保证消息的可靠投 ...
随机推荐
- mips体系堆栈回溯分析与实现
转载:http://www.sohu.com/a/118385096_468740 mips栈帧原理 Call stack 是指存放某个程序的正在运行的函数的信息的栈.Call stack 由 sta ...
- Kafka-Monitor
kafka Monitor 监测Kafka集群状态 Topic.Consumer Group列表 图形化展示 topic 和 consumer 之间的关系 图形化展示 consumer 的 Offse ...
- setTimeout设置不起作用
setTimeout立刻调用了 a()方法而不是xx秒以后,是因为调用方法时候没有加双引号. 正确做法:setTimeout(" a() ",5000): 调用 a() 方法时候要 ...
- Mac下的开发工具
1.webstrom 淘宝上2块钱就能买一个 WebStorm 是jetbrains公司旗下一款JavaScript 开发工具.被广大中国JS开发者誉为“Web前端开发神器”.“最强大的HTML5编辑 ...
- git获取内核源码的方法
[转]http://www.360doc.com/content/17/0410/16/23107068_644444795.shtml 1. 前言 本文主要讲述ubuntu下通过git下载linux ...
- [转]GDB-----1.GDB概述
作者: liigo原文链接: http://blog.csdn.net/liigo/archive/2006/01/17/582231.aspx 1.前言 本文写给主要工作在Windows操作系统下而 ...
- GPIO接口解析【转】
本文提供了一个linux下访问GPIO的约定的概述. 这些调用使用gpio_* 命名前缀.没有别的调用会使用这个前缀或是相关的__gpio_*前缀. 转自:http://blog.163.com/w5 ...
- maven项目提示web.xml is missing或红色感叹号
1.web.xml is missing and <failOnMissingWebXml> is set to true 提示信息应该能看懂.也就是缺少了web.xml文件,<fa ...
- oracle flashback 后主键及索引更改问题
oracle flashback 后 主键会变为bin开头,如果删除可以采用将sql复制出单独窗口,然后加上“”执行
- Go语言规格说明书 之 类型(Types)
go version go1.11 windows/amd64 本文为阅读Go语言中文官网的规则说明书(https://golang.google.cn/ref/spec)而做的笔记,完整的介绍Go语 ...