赞
踩
CAP定理告诉我们,一个分布式系统不可能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三个基本需求,最多只能同时满足其中的两个。一致性和可用性永远无法存在一个两全其美的方案,只能尽可能地适用于某种情形。
一致性:所有节点在同一时间的数据完全一致。
在分布式环境中,一致性是指数据在多个副本之间是否能够保持一致的特性,如果能够针对一个数据项的更新操作执行成功后,所有的用户都可以读取到其最新的值,那么这样的系统就被认为具有一致性(或严格一致性)。
可用性:系统提供的服务必须一直处于可用的状态,对于用户的每一个操作请求总是能够在有限的时间内返回结果。
这里重点看下“有限的时间内”和“返回结果”,有限的时间是指对于用户的一个操作请求,系统必须能够在指定的时间(即响应时间)内返回对应的处理结果,如果超过了这个时间范围,那么系统就被认为是不可用的。
分区容错性:系统在遇到某节点或者网络分区故障的时候,仍然能够对外满足可用性或一致性的服务,除非整个网络环境都发生了故障。
当我们的数据项只在一个节点保存时,一旦出现分区,那么其他部分就访问不到这个数据了,这是不能容忍的,所以我们需要把数据分布在多个节点上,那么当出现分区后,也不会影响我们拿到数据,从而提高容错性.但是当我们把数据放在多个节点中后,又会带来数据一致性的问题,为了保证数据一致, 每次写(事务)操作就需要等待所有节点执行成功,而这等待又会带来可用性的问题.
最终一致性强调的是系统中所有的数据副本,在经过一段时间的同步后,最终能够达到数据一致的状态。因此,最终一致性的本质是需要系统保证最终数据能够达到一致,而不要求实时保证系统数据的强一致性。
事实上,最终一致性并不是只有那些大型分布式系统才涉及的特性,许多现代的关系型数据库都采用了最终一致性模型。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。