加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 云计算 > 正文

CAP,能少了P?你清楚吗?

发布时间:2022-07-30 15:35:17 所属栏目:云计算 来源:互联网
导读:大型网站几乎都是分布式系统,分布式系统也越来越重要,你也会发现周围的许多事物已经是分布式理论的最佳实践了。 前言 分布式系统(distributed system)主要有三个指标 一致性 (Consistency),可用性(Availability),分区容错性(Partition tolerance
  大型网站几乎都是分布式系统,分布式系统也越来越重要,你也会发现周围的许多事物已经是分布式理论的最佳实践了。
 
  前言
  分布式系统(distributed system)主要有三个指标 一致性 (Consistency),可用性(Availability),分区容错性(Partition tolerance)。
 
  1. 分区容错性
  分布式系统存在多个子系统,每个子系统子网络可以叫做区。各个节点之间的数据需要同步,子系统之间也需要通信。而分区容错指的是某个节点出现故障,而整个服务不会受到大的影响。
 
  若一个服务为单节点服务,那么它可以说是满足CA。
 
  C表示任何时间点读取的数据都是相同的,保证了一致性。
 
  A表示只要有节点可以用,那么就可以提供服务
 
  由于是单节点服务,那么总是满足CA的条件。
 
  而在分布式系统中,大多时候,单节点出问题之后,我们是需要保障整个系统都是可以使用的。所以可以认为CAP中的P总是需要成立的。
 
  2. 一致性
  一致性指的是分布式系统中所有节点在同一时间访问时,返回数据完全一致。
 
  从客户端看,就是并发访问时获取数据的一致性。
 
  服务端来看,就是数据节点之间的同步问题,即节点之间通过通信保持数据的实时更新。
 
  也有对一致性分成强,弱以及最终一致性三类。
 
  强一致性 要求数据更新后,对于其他节点,必须立马同步,并可见。
 
  弱一致性 可以允许在数据更新后,部分节点不能访问到最新的数据。
 
  最终一致性 要求一段时间内不能访问最新数据,但是一段时间后,分布式系统的所有数据需要统一
 
  3. 可用性
  相对来说,可用性比较容易理解,就是说任何时候,我们都可以从系统中获取数据。系统可以提供正常的用户服务。不会出现操作失败,访问超时等情况
 
  总结
  由于网络通信肯定会出现延迟丢包等问题,所以一般情况而言,分区容错性是必须实现的。那么分布式系统会在一致性和可用性之间进行权衡, 即C和A之间的选择。
 
  CP without A  即要求一致性,每个请求都要求服务之间保持强一致性,分区则会使同步时间无限延长,如果网络严重故障,消息丢失的情况下,用户体验差,需要全部数据一致后才能提供访问。比如Redis,Hbase 等就会要求数据一致性。Zookeeper 也是遵循CP原则,Leader节点挂掉之后,集群会进行选举,选举期间整个Follower都是不可用的,需要同步数据,所以需要Zookeeper恢复之后才可以使用。
 

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读