首页 > 其他分享 >可靠消息最终一致性

可靠消息最终一致性

时间:2022-09-06 00:56:52浏览次数:47  
标签:可靠消息 通知 最终 MQ 消息 一致性 接收

 

先上图:

 

1. 首先会发送事务消息给MQ Server

2. MQ 会回复一个发送成功的消息,此时MQ Server并不能投递消息,因此还没有收到发送的确认

3. MQ发起方会执行本地事务。

4. 执行完以后就发送commit 或者Rollback 如果是commit的话就开始投递消息; 如果是Rollback,MQ Server 就会删除消息,不投递。

如果 执行完之后发送没有收到怎么办?

5. 未收到确认时候,MQ Serrver会回查事务状态。

6. MQ发送方会检查本地事务的状态。

7. 将本地事务状态进行Commit/Rollback消息给MQ Server。

 

这个方案的保障主要是通过RecketMQ 保证发送方的一致性。

 

 

最大努力通知方案:

先上图:

  

 

   这个是方案1:接收方主动发起调用,保证自己获取消息

  

 

  方案2:通过一个通知程序来通知接收通知方,  这样做是为了有些业务情况下(你作为接收通知方),你不能去监控MQ,因此你就会尬住,只能通过另外一个程序来发送给你,而这个你也是需要主动发起并通知到发起通知方,让它再发一次。

 

 

目标:发起通知方通过一定的机制最大努力将业务处理结果通知到接收方。

具体包括:

  1、有一定的消息重复通知机制

    因为接收通知方可能没有接收到通知,此时要有一定的机制对消息重复通知。

  2、消息校对机制

    如果尽最大努力通知也没有通知到接收方,或者接收方消费消息后要再次消费,此时可由接收方主动向通知方查询消息信息来满足需求。

 

那最大努力通知和可靠消息一致性有什么不同?

  1、解决方案思想不同

    可靠消息一致性,发起通知方需要保证将消息发出去,并且将消息发到通知方,消息的可靠性关键由发起通知方保证。(发起通知方)

    最大努力通知,发起通知方尽最大努力将业务处理结果通知为接收通知方,但是消息可能接收不到,此时需要接收通知方主动调用发起通知方的接口查询业务处理结果,通知的可靠性关键在接收通知方,(可靠性关键在通知方)

  

  2、业务应用场景不同

    可靠消息一致性关注的是交易过程的事务一致,以异步的方式完成交易(异步)

    最大努力通知关注的是交易后的通知事务,将交易结果可靠的通知出去。

  

  3、技术解决方向不同

    可靠消息一致性要解决消息从发出到接收的一致性,即消息发出并且被接收到。  (消息发出到接收的一致性)

    最大努力通知无法保证消息从发出到接收的一致性,只是提供消息接收的可靠性机制。  最大努力的将消息通知给接收方,当消息无法被接收方接收时,由接收方主动查询消息   (业务处理结果)  重点不是调用方是谁,而是通知方是谁

    

    

  

标签:可靠消息,通知,最终,MQ,消息,一致性,接收
From: https://www.cnblogs.com/followers/p/16660237.html

相关文章

  • 投篮姿势固定-----最终-----核心要点
    1预备投篮阶段,膝关节微屈,这里最重要的一点是 --微屈--,如果腿屈的角度过大的话,腿伸展的范围会扩大,时间会加长,身体弹起的高度也会变高,会加长投篮时间,无......
  • lightdb使用一条sql实现高性能事务一致性归历史
    相比insertselect,delete,如下:--lightdb专有oracle匿名块写法BEGINTRANSACTIONISOLATIONLEVELREPEATABLEREAD;insertintoxxselectxxfromyywhereid<xxx;......
  • 内存管理——缓存一致性问题
    缓存一致性问题问题1:多核CPU与cache的缓存一致性问题多核CPU在访问内存时,每个核都有自己的cache,由于cache的写回机制,部分数据没有及时更新到内存,那么在不同线程访问同一......
  • 一致性哈希算法
    应用场景:分布式缓存架构中,典型的如Redis集群问题:2亿条数据要做缓存,如何设计?回复:单机肯定不行,需要用到分布式存储,可以使用redis,如何落地?方式1:哈希取余分区2亿条记录......
  • 1475. 商品折扣后的最终价格
    1475.商品折扣后的最终价格给你一个数组 prices ,其中 prices[i] 是商店里第 i 件商品的价格。商店里正在进行促销活动,如果你要买第 i 件商品,那么你可以得到......
  • 漫画:什么是一致性哈希?
     收录于合集         一年之前——       未来两年内,系统预估的总订单数量可达一亿条左右。 按Mysql单表存储500万条记......
  • 一致性哈希算法 consistent hashing
     在了解一致性哈希算法之前,最好先了解一下缓存中的一个应用场景,了解了这个应用场景之后,再来理解一致性哈希算法,就容易多了,也更能体现出一致性哈希算法的优点,那么,我们先......
  • 如何保证数据库和缓存双写一致性
     数据库和缓存(redis)双写一致性问题,不管你用何种语言,尤其是在高并发的场景下,这个问题会很容易被放大。无论是在工作中,还是在面试中遇到这种问题的概率都非常大,因......
  • 常见的复制模型&分布式系统的挑战 事务,一致性与共识
    Replication(上):常见的复制模型&分布式系统的挑战https://mp.weixin.qq.com/s/LB5SR4ypQwDxzueI1ai2KgReplication(下):事务,一致性与共识https://mp.weixin.qq.com/s/O9Z5e_B......
  • 数据库 - db和redis数据一致性问题
    数据库-db和redis数据一致性问题直接说解决办法:查询数据操作:查询缓存,如果命中,直接返回;如果没有命中,查询数据库,再写入缓存更新数据操作:直接更新db数据库然后......