分布式事务

发布时间 2023-10-05 19:29:01作者: jf666new

CAP

定义

CAP,3者无法同时满足。

C- Consistency

一致性指写操作后读操作可读到最新的数据状态,当数据分布在多个节点上,从任意节点读取到的数据都是最新的。
要满足一致性需实现如下目标:
1:商品服务写入主库成功,请求查询从库时,能查到最新数据。
2:商品服务写入主库失败,查询从库时,也查不到最新数据。

如何实现一致性

1:写入主库后,要将数据同步给从库。
2:写入主库后,向从库同步期间,将从库锁定,待同步完成后再释放锁,避免在新数据写入成功后,向从库查到旧的数据。

分布式系统一致性特点

1:由于存在数据同步过程,写操作的响应有一定延迟。
2:为了保证数据一致性会对资源暂时锁定,待数据同步完成,释放锁定资源。
3:如果请求数据同步失败的节点会返回错误信息,一定不会返回旧数据。
4: 牺牲了系统的性能(失去了高并发,高吞吐)

A-Avalilability

可用性需要实现如下目标:
1:从数据库接收到数据查询的请求,则能立即响应查询结果。
2:从库不允许出现响应超时或错误。

如何实现

1:写入主数据库后要将数据同步到从库。
2: 为了保证可用性,不会对从库进行锁定。
3:即使数据还没同步完成,从库也要返回旧数据,如没有旧数据可返回默认信息,不能返回错误或响应超时。

分布式可用性的特点

1:所有请求都有响应(各节点间数据不一致没关系),且不会出现响应超时或响应错误。
2:无法保证重要数据的一致性。

P-Partition tolerance

分区容错性
分布式系统的各系统部署在不同的子网,这就是网络分区,不可避免会出现由于网络问题导致各节点间通信失败,此时仍然可对外提供服务,就叫分区容忍性。
要满足分区容忍性需要实现如下目标:
1:主库向从库同步数据失败不影响读写操作。
2:其一个节点挂掉不影响其他节点对外提供服务。

如何实现

1:尽量用异步取代同步,如主库数据异步同步给从库。
2:添加从库节点,一个节点挂掉其他节点也能提供服务。

特点

1:分布式系统需要具备的基本能力。

组合

p是必须具备,所以只有,cp(保留一致性,Zookpeer)或ap(保留可用性,redis分布式锁)

BASE

Basically Available(基本可用),Soft state(软状态)和Eventually consisten(最终一致性)三个短语缩写。是对CAP的扩展,通过牺牲强一致性获得可用性,当出现故障允许部分不可用,但要保证核心功能可用,允许数据在一段时间不是一致,但最终要是一致,满足BASE的事务,我们称为"柔性事务"。

  • 基本可用: 分布式系统出现故障,允许损失部分可用功能,保证核心功能,如付款功能挂掉,不影响首页及添加购物车等服务。
  • 软状态:不要求强一致,此状态不影响系统可用性,如”支付中“,”提现中“,待数据最终一致后改为”成功“(如提现的T+1)
  • 最终一致: 经过一段时间后,所有节点数据保持一致。