zoukankan      html  css  js  c++  java
  • 分布式事务

    2pc(Two phase commitment protocol)

    一阶段:准备阶段,预留资源

    二阶段:

    所有资源准备成功 -》提交

    出现准备失败 -》 回滚    

    tcc(try-confirm-cancel)  两阶段提交

    三个接口均由编码实现(业务中),事务管理器统一调度,try成功confirm要求一定成功。

    try    预留资源(冻结资金),冻结资金是否小于余额。

    confirm  所有资源准备成功 -》提交 (扣除冻结资金)

    cancel  出现准备失败 -》 回滚(释放冻结资金)

    - 隔离性    事务间的隔离性。记录中间表,绑定事务id。业务记录流水

    - 空回滚    允许空回滚。(网络波动,try超时,cancel回滚)

    - 防悬挂    try拥堵(cancel后try才执行),防止空回滚后的try操作。允许空回滚,但要拒绝空回滚后的try操作(记录流水标记已回滚,try时检查)。

    - 幂等  tcc三个操作的幂等性

    tcc两阶段提交与saga、seta比较

    - tcc两阶段提交适用于金融场景,最终一致。缺点占用资源,系统需要开发tcc三个接口。

    - seta无法保证事务隔离性,可能会有脏数据无法回滚。undolog回滚补偿,不占资源。设计遵循客户少钱机构多钱的原则,最终机构补偿。

  • 相关阅读:
    利用角色简化playbook
    lamp
    playbook部署lamp
    ansible-playbook配置不同系统yum源
    66. 加一
    628. 三个数的最大乘积
    977. 有序数组的平方
    383. 赎金信
    203. 移除链表元素
    83. 删除排序链表中的重复元素
  • 原文地址:https://www.cnblogs.com/chenfx/p/15222930.html
Copyright © 2011-2022 走看看