《后端知识体系系列》之分布式系统中的CAP理论

最近看了分布式是相关知识,所以边看边总结吧!

分布式系统的特点

随着互联网技术的发展,产生的数据量越来越大,对系统的要求更高,这就要求系统需要支持高并发和海量数据处理。
分布式系统技术就是用来解决集中式架构的性能瓶颈问题。
《后端知识体系系列》之分布式系统中的CAP理论_第1张图片

以上图为例,系统中实现了登录、订单、支付模块,这些模块都只通过一个系统来承载,那么当大量的请求过来时,这个系统就会存在一定的性能问题,就是所谓的集中式架构的性能瓶颈。

分布式系统的核心是可扩展性,通过对服务、存储的扩展,来提高系统的处理能力,通过对多台服务器协同工作,来完成单台服务器无法处理的任务,尤其是高并发或者大数据量的任务。

CAP理论

CPA理论可以表述为一个分布式系统最多只能满足一致性(Consistency)、可用性(Availablity)、分区容忍性(PartitionTolerance)这三项中的两项。
《后端知识体系系列》之分布式系统中的CAP理论_第2张图片

  • 一致性:一致性是指“所有节点同时看到相同的数据”,即更新操作成功并返回客户端完成之后,所有节点在同一时间的数据完全一致,等同于所有节点都会拥有最新的数据。

  • 可用性:可用性是指“任何时候,读写都是成功的”,即服务一致可用,而且是正常相应时间,比如平时看到一些公司说系统的稳定性做到了3个9、4个9等就是对可用性的描述,这叫做SLA即服务水平协议。

  • 分区容忍性:分区容忍性是指“当部分节点出现消息丢失或者分区故障的时候,分布式系统仍然能够继续运行”,即系统容忍网络出现分区,并且在遇到某节点或网络分区之间网络不可达的情况下,仍然能够对外提供满足一致性和可用性的服务。

CAP理论的应用

通过CAP理论,在架构设计中,不要把经理浪费在如何设计能够满足三者完美的分布式系统上,而要合理进行取舍。

不同业务对于一致性的要求是不同的,举例来说,在微博上发表评论和点赞,用户对不一致不敏感的,可以容忍相对教长时间的不一致,只要做好本地的交互,不影响用户体验,所以这时候可以使用AP;另外在电商中,产品的价格则需要强一致性的,商家更改价格是要立即同步给所有的买家,所以该架构中一定要满足的是C,选择A还是P可以根据实际情况进行选择。

下面说两种架构:
CP架构:对于CP架构放弃了可用性,追求一致性和分区容忍性,例如平时使用的zookeeper,就是采用了CP一致性。zookeeper是CP架构,就意味着面对网络分区时,为了保持一致性,zookeeper是不可用的。
上图中服务A、服务B和服务C注册到了zookeeper中,同时服务C功能的实现需要服务A提供一些服务,如果服务A挂掉,那么服务C就无法再请求服务A,如果能够请求,那么就违反了一致性理论。
《后端知识体系系列》之分布式系统中的CAP理论_第3张图片

AP架构:对于AP架构,则舍弃了一致性原则,也就是放弃强一致性,追求了分区容错性和可用性。例如在SpringCloud的服务注册中心Eureka,Eureka中的节点都是平等的,几个节点挂掉不影响正常节点的工作,剩余的节点依然可以提供查询和注册服务,只要有一台Eureka还在,就能保证注册服务可用,只不过查询到的信息可能不是最新的版本。
《后端知识体系系列》之分布式系统中的CAP理论_第4张图片

上图中服务A、服务B和服务C注册到了Eureka中,同时服务C功能的实现需要服务A提供一些服务,如果服务A挂掉,那么服务C依然可以请求到服务A的数据,但是数据可能不是最新的,因为Eureka会对这些服务进行缓存,这样保证服务宕机仍然能够位置系统的正常运行。

欢迎关小白的公众号【陈汤姆】

你可能感兴趣的:(进阶学习-zk,dubbo,kafka,k8s,docker)