数据一致性解决方案

数据一致性解决方案
最新回答
殇情

2023-06-08 15:22:45

数据一致性解决方案包括多副本数据一致性和分布式事务数据一致性等方面,可分为强一致性和弱一致性解决方案:

  1. 多副本数据一致性:一般用于容灾和高可用,副本之间通过同步复制或者异步复制的方式达到数据一致。
  2. 分布式事务数据一致性
    • 强一致性解决方案:一次请求对多个数据源的数据进行完整性以及一致性的操作,满足事务要么全部成功,要么全部失败的特性,保证原子性以及可见性。不过它通过锁定资源实现,会牺牲性能。
      • XA分布式事务:由X/OPEN组织提出规范,定义了全局事务管理器(TM)和本地资源管理器(RM)间的接口。主流数据库提供XA接口,全局事务管理器用XA二阶段提交协议与数据库交互。
      • 二阶段提交(2PC):准备阶段,事务协调者询问参与者能否提交事务;提交阶段,根据参与者回复决定提交或回滚。但存在性能、可靠性和数据一致性等问题。
      • 三阶段提交(3PC):在2PC基础上改进,加入超时机制,将准备阶段拆分为两个阶段,减少了参与者崩溃或出错带来的问题。
    • 弱一致性解决方案:复制是异步的,允许一定程度的数据脏读,以提高系统吞吐量,最终一致性是其特例。
      • 消息队列:建立两个消息topic,分别处理正常业务提交和异常冲正消息,根据业务情况选择相应topic处理。
      • 事务消息方案:消息队列需支持半事务消息,确保请求服务执行本地事务和发送消息在一个全局事务中,失败时可能需人工干预。
      • 数据订阅方案:监听数据库更新日志并转换成消息流供消费端订阅处理,存在一定消息延迟。
      • TCC事务补偿:是服务化的二阶段编程模型,包括try、confirm、cancel三个阶段,由业务编码实现,可提升性能、保证数据最终一致性、增强可靠性,但业务耦合度高。
      • Saga事务模式:将长事务拆成多个本地短事务,由saga事务协调器协调,失败时按相反顺序调用补偿操作,但有些场景不适合补偿。