CAP理论
<1>Consistency 一致性
写操作之后可以读取到最新的数据状态,当数据分布在多个节点上从任意及诶单读取到的数据都是最新的状态
如何实现一致性
(1)写入主数据库后将数据同步到从数据库
(2)写入主数据库后,在向从数据库同步期间将数据库锁定等待同步完成之后在释放锁。避免在新数据写入成功之后向数据库查询旧数据
一致性特点
(1)由于存在数据同步的过程写操作会有一定的延迟
(2)为了保证数据一致性会对资源暂时锁定,等待数据同步完成释放资源
(3)请求数据同步失败节点则会返回错误信息不会返回旧数据
<2> Availability 可用性
指任何事物操作都可以得到响应结果,且不会出现响应超时或响应错误
如何实现可用性
(1)写入主数据库后将数据同步到从数据库
(2)保证从数据库的可用性,不可将数据库中的资源进行锁定
(3)数据还未同步从数据库必须返回查询的数据(可以使旧数据),没有9️旧数据返回默认信息(不能返回错误或响应超时)
可用性的特点
(1)所有请求都有响应且不会出现响应超时或者错误
<3> Partiton tolerance 分区容忍性
因为分布式系统的特点部署在不同的子网中(网络分区),因为网络问题导致节点通信失败,即使在失败是也可以对外提供服务(分区容忍性)
实现分区容忍性
(1)使用异步操作取代同步操作
(2)添加从数据库节点,主从数据库即使一个节点挂掉也可以从其他节点提供服务
特点
(1)分区容忍性时分布式系统基本
CAP事务的特点
所有分布式事务场景中不会同时具备C,A,P三个特性 在具备P的前提下A,C不共存
CAP实际应用组合
1)AP 放弃一致性 提高分区容忍和可用
2)CP 放弃可用性 追求一致性和分区容错 例如 zookeeper足球强一致性
3)CA 放弃分区容忍 不考虑网络问题或者节点性能
BASE理论
因为CAP理论前提最多同时满足CAP中任意两项,实际应用中AP更多。AP放弃一致性前提保证可用性和分区容忍性。
但是实际中又不能彻底抛弃一致性,CAP中的一致性要求在任何时间查询节点数据必须保持一种这是一种强一致性。但是大多数条件下我们不必保证每时每刻一致,我们强调最终一致性允许在一段时间内每个节点不一致,但是经过一段时间之后每个节点数据必须保持一致(最终一致性)
Base理论介绍
BASE时Basically Availale(基本可用),Soft state(软状态),Eventually consistent(最终一致性)。BASE理论是CAP中AP的一个扩展。通过牺牲强一致性获取可用性,但是当出现故障允许部分不可用但是要保证核心功能可用,允许数据在一段时间不一致只需要保证最终相同称之为“柔性事务”
1)基本可用 分布式系统出现故障允许损失部分可用功能保证核心功能可用
2)软状态 不要求强一致性
3)最终一致性能 经过一段时间后所有节点都会达到一致