CAP 原理
CAP原理是指,在分布式系统中这三个要素最多只能同时实现两点,在做分布式架构设计时,必须做出取舍.对于分布式缓存数据系统,分区耐受性是基本要求,否则失去了应用价值.
因此在分区耐受性发生的时候,要么我们系统不可用,停止或取消操作,保证数据的一致.要么我们系统提供服务,但是数据的一致性得不到保证.
一致性(
Consistency
):数据在多个副本之间是否能够保持一致的特性。(每次读取的数据都应该是最近写入的数据,而不是过期数据)可用性(
Availability
):提供的服务必须一直处于可用状态,对每一个操作的请求必须在有限时间内返回结果。(不过响应数据不需要保证数据是最新的)分区耐受性(
Partition
tolerance
):分布式系统在遇到网络分区故障时,仍然需要保证对外提供一致性和可用性的服务,除非整个网络都发生故障。
例如:以下数据存储有3个节点情况,在通信没有问题的话,A和B同步从而保证一致性、可用性,如果A和B出现网络问题客户端1写入节点A和客户端3写入节点B值不同,系统的一致性、可用性不能同时满足.
如果满足一致性,则只能在发现节点B通信失败后停止服务,客户端3在写入是不可操作,这样就影响了可用性.
如果满足可用性,则允许客户端3对节点继续写入,这样就导致客户端2和客户端4读取的不一致.影响了数据一致性.
在CAP原理中分区耐受性保障,只是在一致性和可用性之间取一个平衡.
最终一致数据存储(牺牲短时间一致性而换取高可用性):允许短时间内获取的数据是不一致,但是最终要保证数据是一致的.
根据时间戳写覆盖保障最终数据一致.
客户端处理最终数据一致.
写入多个节点,读取数据不一致时投票解决.
评论