• 分布式事务及其常见的解决方案


    什么是事务?

      事务提供一种机制,能将一个活动涉及的所有操作纳入到一个不可分割的执行单元,所有的操作均正常执行的情况下方能提交,只要任一操作失败,都将导致事务整体回滚。

    什么是分布式系统?

      分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。

    什么是分布式事务?

      当事务的参与者、支持事务的服务器、资源服务器、事务管理器,都在分布式系统的不同节点上时,就是分布式事务。

    分布式理论

    • CAP定理:web服务无法同时满足以下3个属性
      • 一致性:客户端知道的一系列操作都会同时生效
      • 可用性:每个操作都必须以可预期的响应结束
      • 分区容错性:即使某单个组件无法可用,操作依然可以完成。  
    • BASE理论(对CAP定理进一步扩充):每个应用可以根据自身的业务特点采用适当的方式使系统达到最终一致性  
      • 基本可用
      • 软状态
      • 最终一致性  

    目前业界提供的分布式事务解决方案

    • 多阶段提交(2PC、3PC):需要额外的资源管理器来协调事务,数据一致性强,但是实现方案复杂,性能较差,不适用于高并发。如阿里开源的fescar。
    • 补偿事务(TCC):每个事务操作都需要提供三个操作:尝试、确认、撤销。数据一致性的强度比多阶段提交方案低,但实现的复杂度较低,缺点:每个业务需要实现3个操作可能出现过多的补偿代码。
    • MQ事务消息:RocketMQ支持事务消息,事务执行流程包括:发送预消息、执行本地事务、确认消息发送成功。它的消息中间件存储了下游无法消费成功的消息,并不断重试推送下游消费消息。生产者需要实现一个check接口,RocketMQ会根据发送端设置的策略来决定是回滚还是继续发送确认消息。保证了消息发送与本地事务同时成功或同时失败。     

    以上参考:https://mp.weixin.qq.com/s/7HKRkzTDu3AVP0UbeHb-zw、https://mp.weixin.qq.com/s/v7rqlz4erRC9ZvEZk6mwvg

  • 相关阅读:
    【uni-app】预览图片(单/多张)
    【uni-app】全局数据globalData的设置、获取、修改
    C# DataGridView删除指定行
    设置DataGridview行的字体颜色
    设置DataGridView的单元格颜色
    JAVA设计模式总结之23种设计模式
    为什么要用k8s(优缺点)
    @RequestMapping中Get&Post 不写默认为都支持
    查询某条记录在mysql中的行数
    如何屏蔽博客园新出的标题栏?一行代码屏蔽博客园冒出的标题栏!
  • 原文地址:https://www.cnblogs.com/smallzhen/p/14438919.html
Copyright © 2020-2023  润新知