一:介绍

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消息可靠机制的更多相关文章

  1. Storm消息可靠处理机制

    在很多应用场景中,分布式系统的可靠性保障尤其重要.比如电商平台中,客户的购买请求需要可靠处理,不能因为节点故障等原因丢失请求:比如告警系统中,产生的核心告警必须及时完整的知会监控人员,不能因为网络故障 ...

  2. Storm消息容错机制(ack-fail机制)

    storm消息容错机制(ack-fail) 1.介绍 在storm中,可靠的信息处理机制是从spout开始的. 一个提供了可靠的处理机制的spout需要记录他发射出去的tuple,当下游bolt处理t ...

  3. ActiveMQ的JMS消息可靠机制

    JMS消息可靠机制 ActiveMQ消息签收机制: 客戶端成功接收一条消息的标志是一条消息被签收,成功应答. 消息的签收情形分两种: 1.带事务的session 如果session带有事务,并且事务成 ...

  4. storm 消息确认机制及可靠性

    worker进程死掉 在一个节点 kill work进程 比方 kill 2509  对work没有影响 由于会在其它节点又一次启动进程运行topology任务 supervisor进程死掉 supe ...

  5. JMS消息可靠机制

    ActiveMQ消息签收机制: 客戶端成功接收一条消息的标志是一条消息被签收,成功应答. 消息的签收情形分两种: 1.带事务的session 如果session带有事务,并且事务成功提交,则消息被自动 ...

  6. Storm学习笔记 - 消息容错机制

    Storm学习笔记 - 消息容错机制 文章来自「随笔」 http://jsynk.cn/blog/articles/153.html 1. Storm消息容错机制概念 一个提供了可靠的处理机制的spo ...

  7. storm - 可靠机制

    一 可靠性简单介绍                    Storm的可靠性是指Storm会告知用户每个消息单元是否在一个指定的时间(timeout)内被全然处理. 全然处理的意思是该MessageI ...

  8. Storm编程入门API系列之Storm的可靠性的ACK消息确认机制

    概念,见博客 Storm概念学习系列之storm的可靠性  什么业务场景需要storm可靠性的ACK确认机制? 答:想要保住数据不丢,或者保住数据总是被处理.即若没被处理的,得让我们知道. publi ...

  9. Rabbitmq可靠消息投递,消息确认机制

    前言 我们知道,消息从发送到签收的整个过程是 Producer-->Broker/Exchange-->Broker/Queue-->Consumer,因此如果只是要保证消息的可靠投 ...

随机推荐

  1. div背景半透明

    例子: html: <div class="erp-mask-a" > <div class="erp-mask-cell-a"> he ...

  2. CentOS7配置网络

    #进入目录 cd /etc/sysconfig/network-scripts/ #编辑ifcfg-XXX vi ifcfg-eno167777 #把onboot=no 改为yes #重启 shutd ...

  3. ditto复制增强

    1.下载 http://ditto-cp.sourceforge.net/ 2.用法   ctrl+` ctrl+数字 或者  ctrl +`  然后用鼠标选择 soeasy

  4. TeamCity 和 Nexus 的使用

    参考:http://www.jianshu.com/p/255a484555d9 TeamCity 安装部署(Linux 环境) 在我讲之前,如果你英文还可以,就到官网这里看下: Installati ...

  5. 【网络编程2】网络编程基础-发送ICMP包(Ping程序)

    IP协议 网络地址和主机协议 位于网络层的协议,主要目的是使得网络能够互相通信,该协议使用逻辑地址跨网络通信,目前有两个版本IPV4,IPV6. 在IPV4协议中IP地址是一个32位的数备,采用点分四 ...

  6. python 历险记(三)— python 的常用文件操作

    目录 前言 文件 什么是文件? 如何在 python 中打开文件? python 文件对象有哪些属性? 如何读文件? read() readline() 如何写文件? 如何操作文件和目录? 强大的 o ...

  7. IAR各个历史版本的下载地址

    http://supp.iar.com/Updates/?product=EWarm 点击进入上述链接,拉到最底部,点击old version即可见到所有的历史版本!!!

  8. awk对列/行进行统计求和【转】

    场景]--类似于excel中的sum函数对列/行进行统计求和 A01 A02 A03 A09 [要求1]--对列进行统计求和 A01 A02 A03 A09 TOTAL [要求2]--对行进行统计求和 ...

  9. 一个有趣的小例子,带你入门协程模块-asyncio

    一个有趣的小例子,带你入门协程模块-asyncio 上篇文章写了关于yield from的用法,简单的了解异步模式,[https://www.cnblogs.com/c-x-a/p/10106031. ...

  10. centos6.5环境下svn服务器和客户端配置实用详解

    一.服务器端配置 安装 # yum install -y subversion yum安装软件,不清除软件包的方法 # vim /etc/yum.conf keepcache=0 建立svn版本库数据 ...