2.分布式事务
分布式系统 · 13 篇笔记
- 2.分布式事务historical
1. 什么是分布式事务 - 分布式环境下的事务。 - 传统的事务是单个数据库节点的,而分布式事务则是跨多个数据库节点的,甚至是其他数据源比如Redis、MongoDB 2. 为什么需要分布式事务 传统的数据库事务只能保证单个库内的事务,跨多个库就不行了 参考数据库事务.md 3. 分布式事务使用场景
- 2.1 分布式事务方案之2PChistorical
1. 2PC是什么 保证强一致性的一种分布式事务方案 2. 2PC流程 - 把事务分成两个阶段 - 第一阶段:由事务管理器向所有database发送prepare请求 - 第二阶段根据第一阶段的结果决定。 - 如果第一阶段全部响应ok那么执行第二阶段的commit; - 如果第一阶段有一个datab
- 2.2 分布式事务方案之TCChistorical
1. TCC是什么 保证最终一致性的一种分布式事务方案 2. TCC流程 - TCC:Try、 Confirm、 Cancel - 把事务分成两个阶段 - 第一阶段执行Try操作,对业务检查及资源预留 - 第二阶段根据第一阶段的结果决定。 - 如果第一阶段成功则执行Confirm 做业务确认操作; -
- 2.3 分布式事务方案之可靠消息最终一致性historical
1. 可靠消息最终一致性是什么 保证最终一致性的一种分布式事务方案 2. 可靠消息最终一致性流程 3. 可靠消息最终一致性的使用场景 - 适用于一些最终一致性、时间敏感度低、分布式事务只能成功不能失败的业务,比如注册送积分,登录送优惠券等 - 多个服务多个数据源且数据源可以不是DB 4. 可靠消息最
- 2.4 分布式事务方案之最大努力通知historical
1. 最大努力通知是什么 保证最终一致性的一种分布式事务方案 2. 最大努力通知流程 3. 最大努力通知使用场景 - 适用于一些最终一致性、时间敏感度低、允许少量的分布式事务失败的业务,且被动方处理结果不影响主动方的处理结果,比如银行通知、支付结果通知等。 - 多个服务多个数据源且数据源可以不是DB
- 2.5 分布式事务方案之Sagahistorical
1. Saga是什么 保证最终一致性的一种分布式事务方案 2. Saga流程 - 有多个事务参与者,每个参与者都有两块逻辑:正向操作和逆向操作 - 把事务分成两个阶段 - 第一阶段每个参与者执行正向操作 - 第二阶段根据第一阶段结果而定 - 如果所有正向操作均执行成功,那么分布式事务提交 - 如果任
- 2.6 分布式事务方案之3PChistorical
1. 3PC是什么 - 证强一致性的一种分布式事务方案,2PC的改进版 2. 3PC流程 - 把2PC中的第一阶段拆分成两步,因此整个事务过程分成3个阶段:CanCommit、PreCommit、DoCommit - CanCommit阶段:协调者向所有参与者询问 你们是否可以完成本次事务? ,各个
- 2.7 分布式事务方案之两阶段historical
1. 两阶段是什么 - 将整个事务流程分为两个阶段 - 准备阶段 - 提交阶段或者回滚阶段 2. 两阶段实现 2.1. 数据库层次 - 两阶段实现之2PC.md 2.2. 应用层次 - 两阶段实现之TCC.md 3. 参考 - 请问TCC和2PC的区别在哪里? \- 知乎
- 2.8 可靠消息最终一致性实现之本地消息表historical
1. 本地消息表是什么 我们以下单后增加积分两个事务为例。 下单服务为服务A,积分服务为服务B 1. 服务A执行下单逻辑 2. 服务A下单成功后,发送消息到MQ中 3. 服务B消费消息处理本地事务 4. 服务B执行成功,则更新本地消息表的状态 5. 服务B消息表的状态【可以使用zookeeper解耦
- 2.9 两阶段实现之2PChistorical
1. 2PC是什么 - 2PC:Two-Phase Commit - 把事务分成两个阶段 - 第一阶段由事务管理器像所有database发送prepare请求 - 如果全部响应ok那么执行第二阶段的commit;如果有一个响应fail那么执行第二阶段的rollback - 2. 2PC存在的问题 -
- 2.10 两阶段实现之TCChistorical
1. TCC是什么 - 2PC是数据库层面的两阶段,而TCC是应用层面的两阶段 - TCC: - Try:尝试执行事务 - Confirm:确认执行事务 - Cancel:取消执行事务 - 本质上也是属于两阶段事务。 - 第一阶段执行Try操作,对业务检查及资源预留 - 第二阶段根据第一阶段的结果决
- 2.11 最大努力通知实现之MQhistorical
1. 是什么 1. 生产者执行本地事务完毕,发送消息到MQ 2. MQ把消息丢给消费者 3. 消费者消费消息,执行本地事务,成功则ack,失败则nack并重新入队 4. 消费者可以主动调用生产者的接口查询消息状态 2. 特点 跟分布式解决方案之可靠消息最终一致性.md差不多,依赖于MQ,允许少量的分
- 2.12 RocketMQ事务消息historical
1. RocketMQ事务消息是什么 - 传统的本地消息表需要依赖数据库的消息表 - 而RocketMQ事务则是对本地消息表的一个封装,将本地消息表移动到了MQ内部,解决 Producer 端的消息发送与本地事务执行的原子性问题 2. RocketMQ事务消息原理 1. 服务A发送half mess