分布式系统小知识:Apche Storm可靠性机制里为什么要采用异或来判断消息得到完整性处理?

想起这个问题,是因为知乎上有人提问,https://www.zhihu.com/question/48583003/answer/111853985 storm采用异或的方式来判断消息被完整处理,网上已经有很多介绍了,但是按照这个提问者的描述,为什么它要用异或而不是计数器呢? 这是分布式系统需要考虑异步网络传输模型的原因.acker接收bolt的顺序是不确定的,用来异或的随机数可以认为是一一对应的,就像一把钥匙开一把锁.如果发送的是+1,-1这样的增量,则很容易出现重复,如果acker接收的顺序不是按物理时间顺序,则可能出现tuple的提前ack. 理想的顺序可能是+1,+1,-1,-1,一旦变成了+1,-1,+1,-1,那么第二个数字接收后,message就被ack了.异或则不用担心这个问题

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏人人都是极客

Linux用户态进程的内存管理

上一篇我们了解了内存在内核态是如何管理的,本篇文章我们一起来看下内存在用户态的使用情况,如果上一篇文章说是内核驱动工程师经常面对的内存管理问题,那本篇就是应用工...

21530
来自专栏gaoqin31

设计模式之 策略模式

定义 :封装了一些列算法,它们之前可以相互替换,此模式使得算法的改变,不会影响到使用它们的客户端

13430
来自专栏XAI

Java使用QQ邮箱给其他邮箱发邮件

个人微信小程序可以扫码体验 引入了2个jar包 <!-- mail --> <dependency> <groupId>java...

38670
来自专栏枕边书

PHP中的数据库四、mongodb

传统数据库中,我们要操作数据库数据都要书写大量的sql语句,而且在进行无规则数据的存储时,传统关系型数据库建表时对不同字段的处理也显得有些乏力,mongo应运而...

25280
来自专栏安恒网络空间安全讲武堂

CVE-2011-0104分析

关于office的漏洞。先把进程attach上去然后打开exploit的文件。查看程序崩溃在这里:

15530
来自专栏用户2442861的专栏

修改npm全局安装模式的路径

刚学nodeJS不久,很纳闷为什么全局安装的模块在 'node安装目录/node_modules‘ 中没找到!后来仔细看了下安装成功后的信息,才发现原来是自动安...

11020
来自专栏腾讯Bugly的专栏

Android 混淆那些事儿

本文主要讲述了代码混淆和资源混淆的原理,Studio默认的混淆方案,混淆的参数,以及如何对Apk进行代码混淆(自定义混淆文件)和资源混淆(结合微信混淆和美团混淆...

97550
来自专栏IT可乐

邮件实现详解(四)------JavaMail 发送(带图片和附件)和接收邮件

  好了,进入这个系列教程最主要的步骤了,前面邮件的理论知识我们都了解了,那么这篇博客我们将用代码完成邮件的发送。这在实际项目中应用的非常广泛,比如注册需要发送...

78080
来自专栏漫漫全栈路

ASP.NET MVC学习笔记05模型与访问数据模型

上一篇使用的M模型,并不是真正意义上的Model,现在来添加一些类,并将这些类用来管理数据库中数据(电影)。而这些类,就是ASP.NET MVC中的Model...

30840
来自专栏日常分享

RabbitMQ基本模式

   最近用到了一些RabbitMQ的东西,看了官方的Get Started,以此为模板总结一下。

32320

扫码关注云+社区

领取腾讯云代金券