ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

初识CAP

2022-04-29 19:02:09  阅读:127  来源: 互联网

标签:副本 服务 分区 CAP AP 初识 注册 CP


简介

维基百科翻译版本

一致性(Consistency) :等同于所有节点访问同一份最新的数据副本

可用性(Availability):每次请求都能获取到非错的响应——但能保证获取的数据为最新数据

分区容错性(Partition Tolerance) : 以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。(更易懂的解释:分区容忍性是尽管任意数量的消息被节点间的网络丢失或延迟,系统仍然正常运行)

对于一个分布式系统来说.不可能同时满足以上三点

在分布式环境下,P是一定存在的,一旦出现了网络分区,那么一致性和可用性就一定要抛弃一个。

对于NoSQL数据库.更加注重可用性,所以就会是一个AP系统。

对于分布式关系型数据库,必须要保证一致性,所以就会是一个CP系统。

辩证的看待CAP理论

它是一个证明你不能做什么的理论,就像能量守恒一样,限制了分布式系统设计者的行为。

它的C和A条件都太过极端,很多了解不够深入的设计者就喜欢生搬硬套,搞得像C和A选择了一个就必须完全抛弃另一个一样。

实际上,我们在设计一个系统时,更多的是要选择C和A中的一个,对其进行"降级",以此进行妥协, 也就是trade off的一个过程。

用CAP视角看目前成熟的分布式方案

Quorum Replication

N(副本数), W(写入成功副本数),R(读取成功副本数)·

W+R>N,永远都有一个副本是最新且正确的

N=3, W=1R=3(写可用AP,读一致CP)

比如:消息流水系统,写入时必须成功,读取可以容许失败。

N=3,W=3,R=1 (写一致CP,读可用AP)

比如:电子商务系统,商家修改商品金额,商家修改金额可以暂时的失败或者阻塞,相对的,电子商务系统会面对很多购买用户独去商品金额的请求则取要追求可用性。

共识算法

副本之间有交互, leader提供读写, leader宕了选个新leader,只有选举的短暂过程不可用

CP+HA

总结

cap理论中三者不能100%满足,而p又是分布式系统必须的(没有分区,只有ap,就成了单机系统了),所以要在ac中取舍一个降级。根据不同场景来取舍a或者c。

补充

ZooKeeper cp 和nacos AP哪一个更适合当注册中心?

注册中心更适合用AP,因为注册中心如果不保证C的话,会出现的后果,就是可能有微服务上线,有些微服务去读某个注册中心实例的时候可以读到新注册的服务,有些微服务去读还没更新好的注册中心可能读不到新注册的服务,这个不会有影响。如果是某个服务下线,同理,有些服务感知到了服务下线,有些感知不到,感知不到的话会导致请求失败。

而请求失败我们可以用熔断+降级+重试来进行解决。同时注册中心需要能扛住高并发,也就是能服务于各个服务来抓注册表,心跳等等,也就是说微服务越多,要接受的qps越多,所以qps还是非常高的,而如果用了CP,必然无法扛住这么高的请求。综上,注册中心更适合用AP。

标签:副本,服务,分区,CAP,AP,初识,注册,CP
来源: https://www.cnblogs.com/LiPengFeiii/p/16207742.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有