分布式事务面试题

概念 说明
分布式事务

横跨多个服务,操作多个数据库;

跨库、分库分表、分服务

DTP 模型

DTP模型的5个基本元素:

应用程序 AP                   资源管理器 RM      事务管理器 TM

通信资源管理器 CRM     通信协议 CP

XA规范 定义了RM-TM的交互接口
两阶段提交协议 2PC

分布式事务面试题_第1张图片

两阶段提交协议存在问题:

1、同步阻塞问题。 2、单点故障。 3、数据不一致。

三阶段提交协议 3PC

https://en.wikipedia.org/wiki/Three-phase_commit_protocol

协调者、参与者都引入了超时机制;三阶段 CanCommit、PreCommit(其中一个超时或者执行失败,则TM发起中断)和doCommit

 

3PC :

优点 :引入超时机制,降低了协调者与参与者之间的阻塞范围;

缺点:在参与者接收到preCommit之后,如果出现网络分区,那么该参与者节点会继续执行事务的提交,而其他节点会执行中断事务,最终会造成数据的不一致。

CAP 定理

BASE理论

CAP : 大规模的分布式系统时会遇到三个特性:一致性(consistency)、可用性(Availability)、分区容错(partition-tolerance 最多只能满足其中的2项

 

BASE理论 : 基本可用、软状态、最终一致

刚性事务、柔性事务

刚性事务--强一致性 两阶段提交协议(2PC)

 

柔性事务--最终一致性 TCC(两阶段型、补偿型)、最大努力通知、可靠消息最终一致

TCC(两阶段型、补偿型)

Try阶段: 完成所有业务检查(一致性),预留业务资源(准隔离性)

Confirm阶段:确认执行业务操作,不做任何业务检查, 只使用Try阶段预留的业务资源。

Cancel阶段: 取消Try阶段预留的业务资源。

TCC 与 XA

XA是资源层面的分布式事务,强一致性 ,一直会持有资源的锁;TCC是业务层面的分布式事务,最终一致性,不会一直持有资源的锁

 

TCC :

优点:避免了XA两阶段提交占用资源锁时间过长导致的性能低下问题

缺点:主业务服务和从业务服务都需要进行改造,从业务方改造成本更

最大努力通知型

如银行通知、商户通知等

最简单的一种柔性事务

  1、不可靠消息:业务活动主动方,在完成业务处理之后,向业务活动的被动方发送消息,直到通知N次后不再通知,允许消息丢失(不可靠消息)。

    2、定期校对:业务活动的被动方,根据定时策略,向业务活动主动方查询(主动方提供查询接口),恢复丢失的业务消息。

可靠消息最终一致

RocketMQ的事务消息机制

分布式事务面试题_第2张图片

 

你可能感兴趣的:(分布式架构,面试题)