前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CAP原则的初级探索

CAP原则的初级探索

作者头像
写一点笔记
发布2022-08-11 15:41:55
1860
发布2022-08-11 15:41:55
举报
文章被收录于专栏:程序员备忘录

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

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

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

名词解释

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

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

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

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

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 写点笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档