CAP 原理

用户头像
皮蛋
关注
发布于: 2020 年 11 月 29 日

CAP原理是指,在分布式系统中这三个要素最多只能同时实现两点,在做分布式架构设计时,必须做出取舍.对于分布式缓存数据系统,分区耐受性是基本要求,否则失去了应用价值.

因此在分区耐受性发生的时候,要么我们系统不可用,停止或取消操作,保证数据的一致.要么我们系统提供服务,但是数据的一致性得不到保证.



  • 一致性(Consistency):数据在多个副本之间是否能够保持一致的特性。(每次读取的数据都应该是最近写入的数据,而不是过期数据)

  • 可用性(Availability):提供的服务必须一直处于可用状态,对每一个操作的请求必须在有限时间内返回结果。(不过响应数据不需要保证数据是最新的)

  • 分区耐受性(Partition tolerance):分布式系统在遇到网络分区故障时,仍然需要保证对外提供一致性和可用性的服务,除非整个网络都发生故障。



例如:以下数据存储有3个节点情况,在通信没有问题的话,A和B同步从而保证一致性、可用性,如果A和B出现网络问题客户端1写入节点A和客户端3写入节点B值不同,系统的一致性、可用性不能同时满足.

  • 如果满足一致性,则只能在发现节点B通信失败后停止服务,客户端3在写入是不可操作,这样就影响了可用性.

  • 如果满足可用性,则允许客户端3对节点继续写入,这样就导致客户端2和客户端4读取的不一致.影响了数据一致性.



在CAP原理中分区耐受性保障,只是在一致性和可用性之间取一个平衡.



最终一致数据存储(牺牲短时间一致性而换取高可用性):允许短时间内获取的数据是不一致,但是最终要保证数据是一致的.

  1. 根据时间戳写覆盖保障最终数据一致.

  2. 客户端处理最终数据一致.

  3. 写入多个节点,读取数据不一致时投票解决.



用户头像

皮蛋

关注

趁着年轻把想实现的实现掉 2019.12.19 加入

又懒又笨

评论

发布
暂无评论
CAP原理