
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
分布式编程开发随着互联网的不断发展而被越来越多的程序员掌握,今天我们就通过案例分析来简单了解一下,分布式编程应用方法分享。
1、什么是本地消息表:
本地消息表的核心思路就是将分布式事务拆分成本地事务进行处理,在该方案中主要有两种角色:事务主动方和事务被动方。事务主动发起方需要额外新建事务消息表,并在本地事务中完成业务处理和记录事务消息,并轮询事务消息表的数据发送事务消息,事务被动方基于消息中间件消费事务消息表中的事务。
这样可以避免以下两种情况导致的数据不一致性:
业务处理成功、事务消息发送失败
业务处理失败、事务消息发送成功
2、本地消息表的执行流程:
①事务主动方在同一个本地事务中处理业务和写消息表操作
②事务主动方通过消息中间件,通知事务被动方处理事务消息。消息中间件可以基于Kafka、RocketMQ消息队列,事务主动方主动写消息到消息队列,事务消费方消费并处理消息队列中的消息。
③事务被动方通过消息中间件,通知事务主动方事务已处理的消息。
④事务主动方接收中间件的消息,更新消息表的状态为已处理。
一些必要的容错处理如下:
当①处理出错,由于还在事务主动方的本地事务中,直接回滚即可
当②、③处理出错,由于事务主动方本地保存了消息,只需要轮询消息重新通过消息中间件发送,通知事务被动方重新读取消息处理业务即可。
如果是业务上处理失败,事务被动方可以发消息给事务主动方回滚事务
如果事务被动方已经消费了消息,事务主动方需要回滚事务的话,需要发消息通知事务主动方进行回滚事务。
3、本地消息表的优缺点:
(1)优点:
从应用设计开发的角度实现了消息数据的可靠性,消息数据的可靠性不依赖于消息中间件,弱化了对MQ中间件特性的依赖。
方案轻量,容易实现。
(2)缺点:
与具体的业务场景绑定,耦合性强,不可公用
消息数据与业务数据同库,占用业务系统资源
业务系统在使用关系型数据库的情况下,消息服务性能会受到关系型数据库并发性能的局限
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加抖音太原达内IT培训学习了解。