数据最终一致性解决方案

766 阅读1分钟

一、Event Driven Architecture 基于事件驱动架构

消息表(任务表) :适用于java 、 php

1、 将业务操作抽象成一个任务入库,如果业务涉及到的接口成功,更新任务表成功,不成功设置失败状态,通过定时调度做处理,处理方式有三种:

1) 重试+告警(人工干预)

2) 撤销+告警(人工干预)

3) 直接告警(人工干预)

2、以订单积分操作为例:


1)用户服务积分增减接口保证幂等性,可以支持重试;

2)积分消息发送mq,可以用定时任务异步发送,并重试3次;

3)对于积分消息表没有确认处理的消息,并且重试3次仍然没有成功的消息,告警出来;


二、全局分布式事务服务管理服务gts(dubbo方式)

非强一致性控制,在网络不通等极端情况下可能导致数据不一致,需要告警人工介入


Image text


详见:https://github.com/chenjy16/gts