CAP原则的初级探索

在分布式系统中有一个耳熟能详的原则,这就是CAP理论。那什么是CAP理论。为何这个原则突破不了,是别人想的不够多还是类似已知条件分析下的自锁问题,这里作者做一些初级的探索。首先要说的是CAP原则是加州大学的计算机科学家 Eric Brewer 提出的。

如果纯粹的记下来,那么CAP就是一致性、可用性、分区容错性没什么好说的。然而像作者这样的吃瓜群众根据这三个词谁都不知道到底表达什么意思。所以说还是得学习一下,下面是作者查阅的一些资料,并自己进行的一些解释。

我们仔细考虑到分布式系统,其实主要有以下几个问题需要注意,第一就是写入问题,是全写入还是部分写入。第二是读的问题,如果全写入那么读的数据必然是一致的,但是读取会有时间延迟,如果部分写入,那么读的数据是否一致则不能保证。除此之外,第三点则是节点的新增和宕机,必然要考虑旧数据同步得问题,也就是要保证新节点和老节点的一致性和具有与老节点一样的读能力。通过上述的分析,我们发现分布式系统的上述三个问题在第三点形成一个限制,按照作者自己的想法就是自锁,至于“自锁”是作者自己创建的一个词,主要表达一个现象就是说通过几个条件能够知道事情的全貌,也就是说必要的已知条件可以界限事物的边界,以后有机会再详细探索。下面是作者对CAP理论进行一些初级的解释和探索。

名词解释

一致性:一次读操作在分布式系统中任意一台机器上读取的结果都一样。一次写操作要在其他机器上同时写入才算真正是写入。一致性分为弱一致性、强一致性、最终一致性。其中Zookeeper就是最终一致性。

可用性:分布式系统任意节点对于请求都必须做出对或不对的响应。

分区容错性:在分布式系统中,由于网络延迟或者数据同步时限的影响,数据不能无法保证实时同步,但是分布式系统任然能够运行。这里要表达的意思就是说分布式系统的扩展性,在分布式中能够任意新增节点,而且要保证一致性和可用性。

这里分别思考一下CAP的各个组合。

CA:使用一致性和可用性,抛弃系统的可扩展性。举例来说,我们对集群操作的时候加锁,这里采用读写锁或者乐观锁。那么很容易实现一致性和可用性,但是我们无法保证可扩展性,比如我们新增一台机器,新增机器的数据同步会有延迟,如果采用加锁方式进行数据同步,那么写入的一致性不能满足,同时读取数据也会发生延迟。因此一致性和可用性的绑定限制了系统只能是单节点的。而不能是分布式的。但是分布式的本质还是节点的动态扩展,所以分区容错性是一定要有得。所以CAP中只能从一致性和可用性中选择一个。

CP:采用一致性和分区容错性,放弃可用性。要满足一致性和可用性必然需要采用加锁的方式,但加锁导致读能力降低,也就是说会降低用户的体验。

AP:使用AP就是可用性和分区容错性,抛弃可靠性。就是各个节点之间的数据在某种程度上是不一致的。对于数据的使用来说,各个机器是随时可以访问。但是数据的一致性就不能满足。为什么的原因是如果同时具有一致性,那么可用性就会降低。因为数据的同步和写入需要加锁。而抛弃一致性则提升了用户体验。但是数据肯定是无法做到各个机器的一致。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值