首页 > 其他分享 >分布式事务解决方案

分布式事务解决方案

时间:2022-12-16 12:44:06浏览次数:33  
标签:事务 解决方案 回滚 阶段 提交 分布式

          分布式事务解决方案 

 

1 分布式事务在面试中如何理解?

2 两阶段提交协议?三阶段提交协议?

3 什么是TCC (Try Confirm Cancel) 解决方案?

4 如何利用本地事务表来实现分布式事务?

5  最大努力通知方案是什么?

 

 

 

1   分布式事务是指会涉及到操作多个数据库(服务)的事务   

     其实就是将同一数据库(服务) 事务的概念扩大到对多个数据库(服务)的事务   

     目的是为了保证分布式系统中的数据唯一性

     分布式事务处理的关键是必须有一种方法可以知道事务在任何地方所做的所有动作

     提交或回滚事务的决定必须产生统一的结果 (全部提交或全部回滚)

     分布式集群的情况下  一般加代理层来充当TM的角色 实现对事务的支持

 

 

2  两阶段提交协议简称2PC   2PC 就相当于西式婚礼一样 男女表示 及最终决定是否原因与对方结婚  P准备阶段  C提交阶段

    

    两阶段中的缺点  如下图所示

 

    

 单点故障 : TM 如果挂掉了 整个事务就处理不了了  解决方法 : TM 做集群去处理它

    阻塞资源 : 占用着数据库的连接 是为了后面事务提交或者回滚的方便  解决方法 : 就是采用一个image表  将提交前和提交后的记录下来 如果回滚就分别回滚记录image 记录

    数据不一致 :第二阶段时候 第二个事务被打断了 导致了二阶段的数据不一致  此时采用人工补偿 :例如 : 订单和库存表中的数据变化不一样 本应该是1变2 a 变为 b 此时只有1变为2 a

    没有变为B 此时人工应该将2 变为1 或者b 变为a

 

    三阶段协议是指 can commit     pre commit     do commit  但是3PC 也不能保证数据的一致性 只能保证数据一致的概率  和减少2阶段的资源浪费  can commit 就是提前预检查能够减少错误的概率

 

3 TCC 解决方案全称就是 Try Confirm Cancel   它使用还是2PC 协议  后面的Confirm 和 Cancel 是or 关系  是第二阶段

 

    

 

 

 

 

    

 

4  消息队列 + 本地事务表 + 定时任务  

    
     这种方案能够满足BASE 理论 可以实现数据的一致性 可以减少系统的响应时间 提高业务的吞吐量 

     这里俩个服务  每个服务里都含有单独的本地事务 都来保证全局的事务  

     消息丢失 可以重发  数据重复  可以采用幂等来解决 (增加唯一的ID 到数据库表中)

     此解决方案的应用场景是 微信上春晚抢红包的活动 微信只第一时间告诉你抢到了红包 没告诉你抢到了多少钱  后端设计的是俩个服务 后一个服务知道前一个服务 就是你先抢到红包

 

 

5 最大努力通知方案里面 含有俩种机制 : 重复通知机制 以及 消息校对机制

   

 

 

   

 

   此解决方案的应用场景 比如: 我们有个卖东西的app 采用的是微信支付  当用户下单之后 我们是怎么知道并且啥时候开始发货呢 ? 一种就是微信给我们重复通知 说用户已支付 这时我们可以给用户发货了

 

   另外一种就是我们可以通过消息校对的机制来自查微信  如果已收到货款 就可以确认给用户发货了

 

 



 

 

  

 

    

 

 

 

 

 

 

 

   

标签:事务,解决方案,回滚,阶段,提交,分布式
From: https://www.cnblogs.com/pxzbky/p/16983846.html

相关文章

  • zookeeper单机模式实现分布式,开发部署测试模式机器有限情况
    ​​ZooKeeper的部署和测试​​一背景zookeeper是一个开源的分布式应用程序协调服务,是ApacheHadoop 的一个子项目。它是一个为分布式应用提供一致性服务的软件,提供的功能......
  • 【分布式存储数据恢复】hbase和hive数据库数据恢复案例
    分布式存储数据恢复环境:16台物理服务器,每台物理服务器上有数台虚拟机;虚拟机上配置分布式,上层部署hbase数据库和hive数据库。分布式存储故障&分析:误删除数据库底层文件,数......
  • 分布式系统中的“无状态”和“有状态”详解
    「数据一致性」和「高可用」其实本质是一个通过提升复杂度让整体更完善的方式。本文主要讲一些让系统更简单,更容易维护的东西——「易伸缩」,首当其冲的主题就是「stateless......
  • 事务
    什么是事务?要么都成功,要么都失败事务原则:(ACID)原子性,一致性,持久性,隔离性(脏读,幻读......)原子性(Atomicity)要么都成功,要么都失败一致性(Consistency)事务前后的数据完整性......
  • 怎么设置IP不会冲突,本地电脑为服务器时IP冲突解决方案!
    介绍IP冲突​​IP​​​地址在一个网络当中必须是唯一的,也就是说,IP地址具有唯一性。比如在一个局域网中,192.168.1.3这个IP只有被用在一台计算机上,如果存在两台计算机或者......
  • Ubuntu 22.04‘Temporary failure resolving‘ 解决方案
    1、在ubuntu中使用 sudoapt-getupdate 时会提示以下错误    2、解决方案修改/etc/resolv.conf文件将nameservier修改为8.8.8.8  此时就可以了但......
  • 为什么分布式限流会出现不均衡的情况?
    概述在微服务、API化、云原生大行其道的今天,服务治理不可或缺,而服务治理中限流几乎是必不可少的手段;微服务化往往伴随着分布式的架构,那么仅仅单机限流是不够的,还需要分布式......
  • 为什么分布式限流会出现不均衡的情况?
    概述在微服务、API化、云原生大行其道的今天,服务治理不可或缺,而服务治理中限流几乎是必不可少的手段;微服务化往往伴随着分布式的架构,那么仅仅单机限流是不够的,还需要分布......
  • 使用EFcore连接Oracle数据时出现的错误及解决方案(Oracle版本指定错误)
    使用EFcore连接Oracle数据时出现的错误及解决方案(Oracle版本指定错误)程序环境1,DotNet版本.net6.02,EFcore版本:Microsoft.EntityFrameWorkCore6.0.11Microsof......
  • Spring的事务传播机制
    参考资料:https://zhuanlan.zhihu.com/p/148504094什么是事务的传播简单的理解就是多个事务方法相互调用时,事务如何在这些方法间传播。举个栗子,方法A是一个事务的方法,......