base主动和被动
发布网友
发布时间:2022-04-21 00:23
我来回答
共2个回答
热心网友
时间:2023-08-15 19:05
在网络节点之间无法通信的情况下, 和数据复制相关的功能, 要么选择可用性(A) , 要么选择一致性(C), 不能同时选择两者。
分布式系统下,如果产生了网络分区(P),此时P已经客观存在。那么我们需要在可用性A和强一致性C中做出取舍。分区A和分区B,不能通信,一方的数据无法同步给另一方,我们是选择不忍受数据的强一致性,不提供服务(保C不留A)。还是忍受分区A和分区B 的数据不一致(报A不留C),给客户端提供可用服务呢。
那么如果没有网络分区的情况下,节点之间通信正常。此时P是不存在的。那么我们是可以满足AC的。需要注意的是,不存在网络分区P,我们在分布式系统中满足AC也是对架构有很高要求的。
换言之就是分布式系统下C、A、P不可能同时满足。最多满足两者。
在互联网项目中根据需求进行取舍。通常选择AP 保证最终一致性。但如果银行可能需要强一致性做保障。
BASE 理论
BASE理论是CAP理论不能同时满足的折中理论。看它是四个字母,其实讲的是三个属性, 而每个属性其实包含着两个单词。
Basically Available: 基本可用
我们试想一个两个人对同一个账户进行取钱的操作,这个两个操作被分配到两个机器上。此时这两个机器产生了网络分区,那么如果我们提供可用性的话,两个人都从账户上取出了钱,但如果他们取出的钱超出了账户余额,那么对于银行来说,取钱是一件很麻烦的事情。
上面说到银行通常选择强一致性,那么就放弃可用性了吗。我们可以提供一个基本可用的折中方案,让集群中拥有较多机器的部分继续提供服务,另一部分不接受任何请求,等待网络分区结束后再恢复服务。他们没有利用整个集群的能力,只是利用了其中的一部分。也就是说让一个人能够取出钱来?
为什么说是基本可用(Basically Available)而不是说部分可用(Partially Available)呢?
因为在部分可用的时候,系统不一定是可用的。
Soft State:软状态
软状态在网络分区发生的时候,允许集群中的不同部分都能被访问到。并且,这个时候他们对集群中不同节点的不同操作可能会有不同的状态。如果业务上认为这种不一致是能够容忍的,那么软状态的存在就没有问题,比如说文章的点击数,不是很重要的业务,对用户阻碍也不大。
Eventually Consistency: 最终一致性
如果在网络分区结束后,集群能够自动解决两个部分之间的冲突,让集群达成一致性的状态,那么我们可以说这个集群实现了最终一致性。
这个时候集群没有了网络分区P,重回了拥有CA属性的状态。
补充问题
单机没有P 那么就有CA吗
单节点的系统没有网络分区,那么就自带CA属性吗?
C一致性是客观存在的,如果不考虑并发造成的数据不一致。但是单节点是不拥有可用性A 的,想想为何后来的架构发展为何会走向分布式 微服务。单节点通常在访问量增大时,处理能力有限。可用性就很差了,宕机后,系统直接是不可用的。不能规避单点故障。
热心网友
时间:2023-08-15 19:06
你是误将 be based on 的系表结构,误以为是被动
be based on 的非谓语是省略be 动词,然后保留形容词,就变成beased on
但是,如果是系表结构,这是不及物性质的,后面必须要有on,而base 是及物动词,后面没有on,用basing
类似的还有:
be faced with------faced with facing
be mixed up with------ mixed with
上面几种用主动被动很难解释,用系表结构一看就明白了