架构师训练营 2 期 第六周总结

用户头像
月下独酌
关注
发布于: 2020 年 11 月 29 日

C:Consistency (一致性):每次读取时不会返回过期的数据。这句话是说一个请求,如果做不到返回最新数据,就该返回错误(告知服务不可用,它无法返回期望结果)。



A:Availability (可用性):每次请求应该得到响应数据,不应返回错误。即请求不可引起调用者的异常,但也不保证返回的数据是最新的。从这里看,可用性与一致性是冲突的,实际是二选一。



P:Partiton tolerance(分区耐受性): 首先理解,不同的节点靠通信同步数据的变动。节点间的通信在实际使用过程中是必然发生故障的。而分区耐受性就是指当部分节点间的通信故障时,系统依然是可以操作的。对于一个分布式系统,局部的故障不能影响整体,至少保证可以操作。换句话说,分区耐受性,不是一个选择项,而是默认需要得到保证的。



从以上简述来看,CAP原理就是说:对于分布式系统,在保障分区耐受性的前提下,一致性与可用性无法同时满足。



一次只能满足两个特性,意味着我们需要针对剩余的那个特性继续操作。



最终一致性:各节点可能在数据变动后的一小段时间内存在数据不一致的情况,但最终,这些节点的数据会回归一致。

在最终回归一致之前,请求到达不同的节点,会出现用户体验上的数据不一致。

1、简单冲突处理策略:根据时间戳,处理策略

2、客户端冲突解决:某些系统的数据存放在客户端的比重不低,根据不同的客户端上的数据进行合并,提取正确的数据进行修正。

3、投票解决冲突:写数据时同时写入多个节点。当且仅当半数以上的节点返回写入成功,整体操作才认作成功。用户请求获取数据时,也是尝试从等量的多个节点获取,等待至少半数以上节点的返回结果,取最新结果。



后续内容施工中,本周出差,后续补上。



用户头像

月下独酌

关注

还未添加个人签名 2019.07.22 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营2期 第六周总结