微服务架构分布式事务解决方案设计思路(可靠消息最终一致方案-概念)

一、消息发送一致性

    1.消息中间件在分布式系统中的主要作用:异步通讯、解耦、并发缓冲

    151118_mrHP_1157212.png

    2.传统的事务解决

    151930_qdxq_1157212.png

    3.消息发送一致性:变通的做法(主动方执行业务成功后,一定会投递消息到中间件)

    152033_yvCz_1157212.png

二、消息发送一致性的异常流程处理

    1.异常点

    152923_LY92_1157212.png

    2.异常分析

    153007_AWS0_1157212.png

    154538_Lsvf_1157212.png

    3.异常处理

    155154_SXi8_1157212.png

    155348_Zo2a_1157212.png

    *异常处理流程出现异常:再次执行查询,根据返回结果来处理消息即可(可用定时任务)

三、MQ队列消息的处理流程和特点

    1.主要用到队列模型(点对点)。

    160232_2tau_1157212.png

    2.队列消息的生产与消费常规流程

    160504_CASw_1157212.png

    3.对比,常规与消息发送一致性:

    161101_oseh_1157212.png

    4.结论方案

    161248_Pd2b_1157212.png

    5.总结。

    * 常规的MQ队列消息的处理流程无法实现消息发送一致性,因此直接使用现成的MQ中间件产品无法实现可靠消息最终一致性的分布式解决方案。

    *MQ中间件只是此方案中的一个环节。

  四、消息重复发送问题及业务接口的幂等性设计

    161938_fO9Z_1157212.png

    162040_i2AB_1157212.png

    1.消息重新发送的原因

    162204_ngnQ_1157212.png

    2.被动方基于消息的重新发送,要实现业务的幂等

    162607_N6FP_1157212.png

    3.业务接口的幂等性设计(结合具体业务场景,只要保证幂等性即可)

    162704_EGnm_1157212.png

    4.消息重复发送限制。

    163415_iXV6_1157212.png

    *一般设置3,5次,进入DLQ后,按照业务情况来进行处理

    5.消息的ACK确认

    163720_IPz2_1157212.png

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值