第六周作业

发布于: 2020 年 07 月 16 日

CAP原则

CAP原则用于描述 分布式 存储 系统

Consisteny(一致性)

一致性是指对于客户端,每次获取到的数据都是最新的。

Availability(可用性)

可用性是指每个请求都可以在合理的时间内给出响应,不保证获取的数据是最新的。

Partition tolerance(分区容错性)

分区容错性是指当出现了网络问题,系统依然可以对外正常提供服务。

CAP组合

在分布式系统中,CAP只能满足其中两个,只能满足AP或者CP。

为什么不能满足CA,在分布式系统中,存在多台机器同时提供服务。既然是多台机器,它们的通讯方式就是依靠网络,每台机器都有网线插在交换机或者路由器上,有很大的概率出现网络问题,所以P是必须的。

AP组合(可用性,分区容错性)

一般满足AP的分布式存储系统,主从复制,如图。

客户端A将X为1的值写入到存储服务器Node01,写入Node01成功后返回成功。这时Node01还没有来得及将数据同步到Node02,客户端B访问了Node02,读取不到X的值,不满足一致性。

当出现网络问题

客户端A,客户端B依然可以访问存储服务器,只是访问到的数据并不是最新的。满足可用性,满足分区容错性。

当出现服务器宕机

当Node01宕机时,Node02依然可以提供服务。满足可用性。

所以在满足可用性和分区容错性时,无法满足一致性。

CP组合(一致性,分区容错性)

如何满足一致性?一般的解决方案是双写、多写。

客户端A写入X值为1,分别向两台服务器写入,两台服务器都写入成功时,写入才算成功。写入成功后,Node01,Node02的节点数据都是最新的。

当出现网络分区或服务器宕机

客户端A写X值为1,写入到Node01成功,写入到Node02失败,Node02因网络分区或宕机时,写入无法成功,系统返回了错误,即失去了可用性。

总结

常见的CP存储系统,Zookeeper(ZAB协议),Consul(Raft协议)。

基于Multi-Paxos思想实现的一致性算法,通常都是只有系统一半以上节点不可用时,系统才完全不可用,所以并不是选择了CP就一定没有可用性,只是更偏向于一致性。

主从复制的架构也只是偏向可用性,并不是完全失去了一致性,通常一个机房内的数据同步速度是非常快的,主从复制间数据的复制速度也是非常快的。

用户头像

Geek_a327d3

关注

还未添加个人签名 2020.04.14 加入

还未添加个人简介

评论

发布
暂无评论
第六周作业