写点什么

架构师训练营第六周课后作业

用户头像
万有引力
关注
发布于: 2021 年 01 月 02 日

CAP 原理概述

CAP 原理关注的是分布式系统的以下三种性质:

一致性(Consistency)

一致性是指,每次读取的数据都应该是最近写入的数据或者返回一个错误,而不是过去数据,即数据是一致的。

可用性(Availability)

可用性是指,每次请求都应该得到一个相应,而不是返回一个错误或者失去响应,不过这个响应不需要保证数据是最近写入的。 即系统需要一直都是可以正常使用的,不会引起调用者的异常,但是不保证数据是最新的。

分区耐受性(Partition tolerance)

分区耐受性是指,即使因为网络原因,部分服务器节点之间消息丢失或者延迟了,系统依然应该是可以操作的。

CAP 原理核心逻辑

  • 当网络分区失效发生时,我们要么取消操作,这样数据是一致的,但是系统却不可用;要么我们继续写入数据,但数据的一致性就无法得到保证;

  • 对于一个分布式系统而言,网络失效一定会发生,也就是说,分区耐受性是必须要保证的,那么需要在可用性和一致性上必须做二选一;

  • 当网络分区失效,即网络不可用时,如果选择了一致性,系统就可能返回一个错误码或者干脆超时,即系统不可用;如果选择了可用性,那么系统总是可以返回一个数据,但不保证这个数据是最新的;

  • 所以,在分布式系统中必须要满足分区耐受性的前提下,可用性和一致性无法同时满足;

最终一致性

当网络分区失效发生时,优先保证可用性,容忍一段时间内的数据不一致。 当网络分区失效恢复后,数据完成同步,达成最终状态的数据一致性;

最终一致性写冲突

  • 简单冲突处理策略:根据时间戳,最终写入覆盖;

  • 客户端冲突解决:适用存储服务或服务端不关注业务逻辑,由客户端实现逻辑的场景;

  • 投票解决冲突(Cassandra):尝试写入三个节点,至少等待两个节点响应更新成功;尝试从三个节点读取,等待至少两个节点返回,取最新版本;


发布于: 2021 年 01 月 02 日阅读数: 15
用户头像

万有引力

关注

还未添加个人签名 2018.05.30 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营第六周课后作业