0
点赞
收藏
分享

微信扫一扫

2024认证杯数学建模A题思路模型代码论文

蓝哆啦呀 04-12 15:30 阅读 1
分布式

1、什么是事务

事务是指一系列数据库操作,它们被看作是一个逻辑单元,并且要么全部成功地执行,要么全部失败地回滚到初始状态,以确保数据的一致性和完整性。事务具有以下四个特性,通常被称为 ACID 特性:

所有的事务都要满足ACID原则:即

        微服务的业务比较复杂,可能一个业务就要跨越多个服务,每个服务又会有自己的数据库。此时,如果再依靠数据库本身的特性,就不一定能保证整个业务满足ACID原则了。

2、分布式服务案例:

       在这个下单业务发生时,首先创建订单写入订单服务数据库,然后希望依次调用账户服务的扣减余额、库存服务的扣减商品库存。每个微服务都有自己独立的数据库,即独立的事务。

      分布式事务:在分布式系统下,一个业务跨越多个服务或数据源,每个服务都是一个分支事务,要保证所有分支事务最终状态一致,这样的事务就是分布式事务。

      如果,在创建订单和扣减余额都完成后,到了减库存的步骤,库存不足无法完成减库存的操作,但是又无法回滚了。我们希望订单服务、账户服务、库存服务要么一起成功,要么一起失败,这时就需要引入分布式事务来保证一致性。

3、CAP定理

1998年,加州大学的计算机科学家 EricBrewer提出,分布式系统有三个指标

  • Consistency(一致性)
  • Availability(可用性).
  • Partition tolerance (分区容错性)

分布式系统无法同时满足这三个指标,这个结论就叫做 CAP 定理。

1、一致性:用户访问分布式系统中的任意节点,得到的数据必须一致

2、可用性:用户访问集群中的任意健康节点,必须能得到响应,而不是超时或拒绝

3、分区容错性:因为网络故障或其它原因导致分布式系统中的部分节点与其它节点失去连接,形成独立分区,在集群出现分区时,整个系统也要持续对外提供服务。

node2和node3之间由于网络原因造成断联,形成了两个独立分区:

node1更新数据,同步到了node2,但是无法连接到node3,但是整个集群必须对外提供服务;

  1. 如果想要维持三个节点之间的数据一致性,就必须得让用户暂时无法访问node3(可是node3又是健康的,不让别人访问,不满足可用性),等待node2和node3恢复链接,同步数据之后,再让用户访问node3。满足了:一致性-分区容错性(CP)
  2. 如果要满足可用性,那就不能阻塞对node3的访问请求,但是不阻塞又满足不了数据一致性;

像图上这种情况,我们只能满足下面的的其中一个:

  • 一致性-分区容错性(CP)
  • 可用性-分区容错性(AP)

思考:elasticsearch集群是CP还是AP?
ES集群出现分区时,故障节点会被剔除集群,数据分片会重新分配到其它节点,保证数据一致。因此是低可用性,高一致性,属于CP 。

4、BASE理论

3.1、BASE理论是对CAP的一种解决思路,包含三个思想:

          基本可用、软状态、最终一致

  1. Basically Available(基本可用):分布式系统在出现故障时,允许损失部分可用性,即保证核心可用。
  2. Soft state(软状态):在一定时间内,允许出现中间状态,比如临时的不一致状态。
  3. Eventually Consistent(最终一致性):虽然无法保证强一致性,但是在软状态结束后,最终达到数据一致。

3.2、分布式事务最大的问题是各个子事务的一致性问题,因此可以借鉴CAP定理和BASE理论:

  • AP模式:各子事务分别执行和提交,允许出现结果不一致,然后采用弥补措施恢复数据即可,实现最终一致
  • CP模式:各个子事务执行后互相等待,同时提交,同时回滚,达成强一致。但事务等待过程中,处于弱可用状态

举报

相关推荐

0 条评论