当前位置: 首页 > news >正文

建设通查询设通网站职业培训机构排名前十

建设通查询设通网站,职业培训机构排名前十,h5网站建设公司,多少工资消息队列在消息传递的过程中,如果出现传递失败的情况,发送方会重试,在重试的过程中,可能会产生重复的消息。 消息重复的情况必然存在 关于传递消息时能够提供的服务质量标准,MQTT协议给出了三种不同的标准&#xff1…

消息队列在消息传递的过程中,如果出现传递失败的情况,发送方会重试,在重试的过程中,可能会产生重复的消息。

消息重复的情况必然存在

关于传递消息时能够提供的服务质量标准,MQTT协议给出了三种不同的标准:

  1. At most once:至多一次,消息在传递时,最多会被送达一次,一般适用于对消息可靠性要求不高的监控场景。
  2. At least once:至少一次,消息在传递时,至少会被送达一次,不允许丢消息,但是允许有少量重复消息。
  3. Exactly once:恰好一次,消息在传递时,只会被送达一次,不允许丢失也不允许重复。

我们常用的大部分消息队列提供的服务质量都是At least once,包括RocketMQ、RabbitMQ和Kafka。所以说消息队列很难保证消息不重复。

怎么解决消息重发的问题

既然消息队列不可避免的会有消息重发的问题,那么我们应该怎么去解决呢?

一般解决重复消息的办法是在消费端,让我们的消费消息的操作具有幂等性

一个幂等操作的特点是将其任意多次执行所产生的影响与一次执行的响应相同。一个幂等的方法, 使用同样的参数,对它进行多次调用和一次调用,对系统产生的影响是样的。所以我们不需要担心针对幂等的方法执行多次会对系统造成任何改变。

从对系统的影响结果来看:At least once + 幂等消费 = Exactly once。

如何实现幂等操作呢?可以从业务逻辑设计上少,将消费的业务逻辑设计成具有幂等性的操作。

接下来,我们来看三种不同方式来实现幂等。

利用数据库的唯一约束实现幂等

首先,我们可以限定,对于每个转账单每个账户只可以执行一次变更操作,在分布式系统中,这个限制实现的方法非常多,最简单的是我们在数据库中建一张转账流水表,这个表有三个字段:转账单 ID、账户 ID 和变更金额,然后给转账单 ID 和账户 ID 这两个字段联合起来创建一个唯一约束,这样对于相同的转账单 ID 和账户 ID,表里至多只能存在一条记录。

这样,我们消费消息的逻辑可以变为:“在转账流水表中增加一条转账记录,然后再根据转账记录,异步操作更新用户余额即可。”在转账流水表增加一条转账记录这个操作中,由于我们在这个表中预先定义了“账户ID转账单ID”的唯一约束,对于同一个转账单同一个账户只能插入一条记录,后续重复的插入操作都会失败,这样就实现了一个幂等的操作。我们只要写一个 SQL,正确地实现它就可以了。

只要是支持类似“INSERT IF NOT EXIST”语义的存储类系统都可以用于实现幂等操作。

为更新的数据设置前置条件

这种方式的思路是:给数据变更设置一个前置条件,如果满足条件就更新数据,否则就拒绝更新数据,在更新数据的同时,变更前置条件中需要判断的数据。这样在重复执行这个操作时,由于第一次更新数据的时候已经变更了前置条件中需要判断的依据,不满足前置条件,则不会重复执行数据更新操作。

如果我们更新的是一个复杂的业务相关数据,我们可以为数据增加一个版本号属性,,每次更新之前,比较当前数据版本号是否和消息中的版本号一致,如果不一致就拒绝更新数据,更新数据的同时将版本号加1。

记录并检查操作

这种方式的思路是:在发送消息的时候,给每条消息指定一个全局唯一ID,消费时,先根据这个ID检查这条消息是否有被消费过,如果没有消费过,才更新数据,不然就将消费状态置为已消费。

http://www.15wanjia.com/news/38223.html

相关文章:

  • 元氏网站制作谷歌google官网下载
  • b2b2c网站的角色权限是如何设置的最近三天的新闻大事摘抄
  • 有经验的宁波网站建设住房和城乡建设部官网
  • 做视频网站带宽要求百度关键词seo年度费用
  • 如何制作网页图片素材靖江seo要多少钱
  • 专业做pe的网站百度seo标题优化软件
  • 中建社会招聘网站百度网址大全旧版
  • 西地那非片的功能seo综合检测
  • wordpress评论框代码南昌seo方案
  • 运城建设网站seo网站推广助理
  • 网站域名需icp备案磁力兔子
  • 影响网站速度的因素营销软文写作
  • 上饶金河湾做网站重庆seo管理平台
  • 做房产抵押网站需要什么手续网络推广代运营公司
  • aspcms 手机网站爱站网是什么
  • 建网站一定要备案吗seo优化员
  • 做画找图网站域名信息查询网站
  • 90设计网站真实稿费交易链接
  • 文学网站做编辑网络营销题库案例题
  • 网站建设实训报告2000字怎样提高百度推广排名
  • 企业网站的建设目的有什么免费推广产品的网站
  • 做注册任务网站源码策划营销
  • 石家庄专业网站营销巨量算数官方入口
  • wordpress 图床 转移长沙官网seo推广
  • 国内最有趣的25个网站百度如何购买关键词
  • 怎么制作微信网站b2b免费发布网站大全
  • 神华集团两学一做网站baidu优化
  • 网站高端设计公司百度推广入口登录
  • 上海今晚全面消杀3步打造seo推广方案
  • 家装o2o平台有哪些北京核心词优化市场