分布式系统中的分布式事务

分布式事务中可以借助MQ消息系统来进行事务控制,这一点与可靠消息最终一致方案一样。看来MQ中间件确实在一个分布式系统架构中,扮演者重要的角色。最大努力通知方案是比较简单的分布式事务方案,它本质上就是通过定期校对,实现数据一致性。
中间件如何保证消息的一致性:问题的问法多种多样,怎么保证两个服务器的通信同步更新成功,怎么解决分布式事务。网络不好,造成的数据丢失问题。
第一步:首先主动方有个预处理的动作,就是插入一条数据到数据库
日志表中,
这条数据的状态为待确认,然后执行生产者的业务代码时,如果失败就回滚,捕捉异常,把预处理的这条数据给删除了,
数据库就没有数据了,消费方就不会有消息执行。双方数据一致。
如果成功的话,修改数据的状态,把待确认改为待发送,再把信息发给MQ,
在MQ发送信息到消费方有可能导致数据丢失,消费方无法接收信息,那么之前插入数据库中那条数据还是处于待发送状态,
正常情况下消费方如果能接收数据,处理完消费方就会链接到数据库把待发送那条信息删除,删除成功就说明主动方跟消费方都执行成功.
直接删除,不做物理删除,原因:数据量会越来越多。导致服务器的查询速度变慢。
如果数据丢失,消费方无法接收信息,生产者有个定时任务,会不断去数据库找状态为待发送的那条记录,
如果找到待发送这条数据就再次把信息发到MQ,因为不会无限次数发送,因此如果发送6次均为失败就会转人工客服,
比如发送短信通知客服,客服去排查哪条消息再告诉运维,在排查消费端为什么接收不到,这样就可以保证数据的最终一致性.

缺点,缺少实时性。只能确保消息的最终一致性。
优点,对比实时性,效率是非常高的。

猜你喜欢

转载自www.cnblogs.com/heimaguangzhou/p/11399016.html