分布式事务理论和解决方案(lcn框架)

ACID理论:数据库事务正确执行的4个基本要素

  1. 原子性(Atomicity)
  2. 一致性(Consistency)
  3. 隔离性(Isolation)
  4. 持久性(Durability)

一个支持事务(Transaction)的数据库,必须要具有这四种特性,否则在事务过程中无法保证数据的正确性。


CAP原理又称CAP定理,指的是一个分布式系统中,Consistency(一致性)、Availability(可用性)、Partition Tolerance(分区容错性),三者不可兼得。

  • 一致性:所有节点访问同一份最新的数据副本
  • 可用性:部分节点故障后,集群整体仍能响应客户端的读写请求
  • 分区容错性:当某个节点或网络分区故障时,仍能够对外满足一致性和可用性的服务

BASE理论
它是Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性),它是一致性和可用性权衡的结果。
核心思想:即使无法保证强一致性,也应该使用适当的方式,在一定时限内达致最终一致性。

  • 基本可用:允许当系统发生故障时,损失部分可用性
  • 软状态:允许系统中的数据存在中间状态,并且不会影响系统的整体可用性,即允许不同节点之间的数据副本同步存在延迟
  • 最终一致性:所有的数据副本,终过一段时间同步后,最终都能过到一致性

XA协议:它是一个分布式事务协议,它大致分为两部分

  1. 事务管理器
  2. 本地资源管理器

下面是基于XA协议的两阶段(2PC)提交

第一阶段
在这里插入图片描述


第二阶段

在这里插入图片描述


缺点:

  1. 同步阻塞问题,参与者在等待协调者发出提交时,会一直阻塞
  2. 单点故障,在二阶段时,协调者发生故障,所有参与者处于锁定事务资源状态,无法继续完成事务
  3. 数据不一致,由于网络异常或发送commit过程中协调者发生故障,只有部分参与者接受到commit
  4. 保守,当任意一个参与者宕机,协调者超时没收到响应,就会导致整个事务回滚失败
  5. 二阶段无法解决问题:协调者发出commit后宕机,而唯一收到commit的参与者也宕机。那么即使选出新的参与者,这条事务的状态也是不确定的,没人知道事务是否已提交

3pc(三阶段提交协议):

针对2pc的缺点,提出了3pc
2pc只有协调者有超时判断,3pc协调者和参与者均有超时判断
3pc在2pc的基础上引用询问阶段,在开始事务前询问能否进行事务

LCN框架是基于协调spring事务,通过控制协调本地事务与全局事务的一致性从而达到分布式事务的效果,框架属于在2阶段基础至上做了优化。

lcn原理图

lcn原理图

注意:如果发起方执行了调用参与方而发起方执行过长,那么参与方将会因超时回滚而发起方却执行成功,此时可以设置超时时间,默认超时时间为5s,超时容易发生在debug过程中


lcn配合nginx配置集群原理图
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值