分布式事务

  分布式事务大多遵循BASE思想,牺牲部分可用性来达到一致性(最终一致性)

  两阶段提交(2PC)

    各个分布式业务都有 prepare - commit 两个阶段,需要事务协调器(中心)

    prepare阶段,需要每个涉及到事务的节点都预提交数据,并反映是否可以提交。

    commit阶段,事务协调器根据各个节点反映的情况,下发提交或回滚的命令。

  补偿事务(TCC)

    每个操作都会注册一个与其对应的确认和补偿操作。

    try阶段主要针对业务系统做检查及资源预留。

    commit阶段是对业务系统做确认提交。

    cancel阶段主要在业务执行错误,需要回滚的状态下执行的业务。

  补偿事务  相对两阶段提交,实现和流程要简单,但是需要书写补偿业务。

  本地消息表(异步确保)

    核心思想是将分布式事务拆分成本地事务进行处理。

    消息产生方,需要额外创建一个消息表,消费方处理后需要更新消息表

    缺点:将分布式业务耦合到业务系统中。

  MQ事务

    大多类似二阶段提交

  MQ事务异步处理

  

  发送方先投递事务消息到MQ server

  投递成功则响应

  投递方提交本地事务

  本地事务提交成功,则通知MQ server允许消息被消费;如果本地事务提交失败,则MQ server丢弃事务消息

  如果发送方确认超时,则MQ server会主动询问

  如果订阅方执行成功,则MQ server移除事务消息

  如果订阅方执行失败,则MQ server会重新投递,知道订阅方成功

 

posted @ 2018-04-04 14:38  lion_eagle  阅读(237)  评论(0编辑  收藏  举报