Java - CAP定理
2023-12-14 05:22:30
CAP
定理指的是在一个分布式系统中,一致性
Consistency
、可用性
Availability
、分区容
错性
Partition tolerance
,三者不可兼得。
?
一致性(
C
):分布式系统中多个主机之间是否能够保持数据一致的特性。即,当系统数
据发生更新操作后,各个主机中的数据仍然处于一致的状态。
?
可用性(
A
):系统提供的服务必须一直处于可用的状态,即对于用户的每一个请求,系
统总是可以在有限的时间内对用户做出响应。
?
分区容错性(
P
):分布式系统在遇到任何网络分区故障时,仍能够保证对外提供满足一
致性和可用性的服务。
CAP
定理的内容是:对于分布式系统,网络环境相对是不可控的,出现网络分区是不可
避免的,因此系统必须具备分区容错性。但系统不能同时保证一致性与可用性。即要么
CP
,
要么
AP
。
BASE
理论
BASE
是
Basically Available
(基本可用)、
Soft state
(软状态)和
Eventually consistent
(最
终一致性)三个短语的简写,
BASE
是对
CAP
中一致性和可用性权衡的结果,其来源于对大
规模互联网系统分布式实践的结论,是基于
CAP
定理逐步演化而来的。
BASE
理论的核心思想是:即使无法做到强一致性,但每个系统都可以根据自身的业务
特点,采用适当的方式来使系统达到最终一致性。
(
1
) 基本可用
基本可用是指分布式系统在出现不可预知故障的时候,允许损失部分可用性。
(
2
) 软状态
软状态,是指允许系统数据存在的中间状态,并认为该中间状态的存在不会影响系统的
整体可用性,即允许系统主机间进行数据同步的过程存在一定延时。软状态,其实就是一种
灰度状态,过渡状态。
(
3
) 最终一致性
最终一致性强调的是系统中所有的数据副本,在经过一段时间的同步后,最终能够达到
一个一致的状态。因此,最终一致性的本质是需要系统保证最终数据能够达到一致,而不需
要保证系统数据的实时一致性。
Zookeeper
与
CP
Zookeeper
遵循的是
CP
模式,即保证了一致性,但牺牲了可用性。
当
Leader
节点中的数据发生了变化后,在
Follower
还没有同步完成之前,整个
Zookeeper
集群是不对外提供服务的。如果此时有客户端来访问数据,则客户端会因访问超时而发生重
试。不过,由于
Leader
的选举非常快,所以这种重试对于用户来说几乎是感知不到的。所
以说,
Zookeeper
保证了一致性,但牺牲了可用性。
Consul
与
CP
Consul
遵循的是
CP
模式,即保证了一致性,但牺牲了可用性。
Redis
与
CAP
Redis
遵循的是
AP
模式,即保证了可用性,但牺牲了一致性。
Eureka
与
CAP
Eureka
遵循的是
AP
模式,即保证了可用性,但牺牲了一致性。
Nacos
与
CAP
Nacos
在做注册中心时,默认是
AP
的。但其也支持
CP
模式,但需要用户提交请求进行
转换。
文章来源:https://blog.csdn.net/m0_65228708/article/details/134977176
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!