第六周作业
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就一定没有可用性,只是更偏向于一致性。
主从复制的架构也只是偏向可用性,并不是完全失去了一致性,通常一个机房内的数据同步速度是非常快的,主从复制间数据的复制速度也是非常快的。
评论