美文网首页
分布式系统之 CAP 理论和 Base 理论

分布式系统之 CAP 理论和 Base 理论

作者: 猿来是八阿哥 | 来源:发表于2020-04-03 10:32 被阅读0次

内容整理自 邴越分布式技术原理与实战45讲『一块钱上车传送门』。持续学习,遇见更好的自己!

一、 分布式系统

1. 集中式系统的性能问题

毕竟单台机器的性能有限,集中式架构的性能问题主要包含:

  • 可用性不高,容易出现点单故障
  • 可扩展性不高,水平扩展系统容量的难度较大
  • 可维护性低,业务系统间的耦合程度大
  • 成本高,高配置机器成本和低配置机器的成本并不是线性关系
2. 分布式系统的好处

分布式系统的核心是 可扩展性,通过多台机器的合作来完成单台机器无法完成的任务。好处是:

  • 成本低,可以由多台一般配置的机器协同合作,来完成需要高配置机器才能完成的工作。
  • 可用性高,多台机器同时出故障的几率要小于单台机器出故障的几率。
  • 可扩展性高,理想情况下,只需要水平增加机器就可以线性增加系统容量
3. 分布式系统常见问题

由于分布式系统由多台机器协同合作来提供服务,虽然避免了 单点故障,提高了可用性,但也存在一些问题:

  • 多台机器间的通信:
    • 时序性
    • 网络可用性
  • 多台机器间的数据:
    • 状态的一致性
    • 同步的实时性

二、 CAP理论

1. 结论

CAP 理论指出,一个分布式系统只能同时满足以下两点:

  • Consistency 一致性:所有机器同时看到相同的数据
  • Availability 可用性:任何时候,读写都是成功的
  • Partition Tolerance 分区容忍性:部分机器通信延迟、失败或者故障时,系统还可以继续提供一致、可用的服务
2. 结论反证

假设能够同时保证 CAP,因为 P 的存在,则一定存在部分机器间无法通信的情况,那么则一定无法保证所有机器之间的一致性。

3. CP 和 AP

由于 P 是一定的,分布式系统可分为:

  • CP:牺牲一些可用性,来保证更好的一致性。如:ZooKeeper,用来解决分布式系统中多台机器的协调和一致性问题。
  • AP:牺牲一些一致性,来保证更好的可用性。如:Eureka,用来在微服务系统中提供服务的注册和查询功能。

三、 Base 理论

1. 一致性分类

一致性分类:

  • 强一致性:多台机器的状态,一致且实时。
  • 弱一致性:多台机器的状态,在用户能够接受的时间范围内,能达到 最终一致。细分:
    • 因果一致性,如:会话一致性
    • 单调读一致性
    • 单调写一致性
2. 因果一致性举例

因果一致性是指,有因果关系的操作在顺序上能够得到保证。即:机器 A 完成了对某数据的更新,然后告知了机器 B,机器 B 必须能够读取到机器 A 更新后的数据,如果机器 B 也要更新那个数据,必须在机器 A 的更新结果上进行更新。

比如微信:你发了一个朋友圈,你的朋友进行了评论,评论动作由 A 机器来完成。此后,你又对朋友的评论进行了回复,回复动作由 B 机器来完成。这时的 评论回复 就有因果关系,执行顺序必须得到保证。

3. 会话一致性举例

会话一致性是指,在一个会话中,必须 能够读到刚才写入的数据。比如:分布式系统中的 session 一致性问题。

4. Base 理论

Base 理论的核心思想是 最终一致性,简单概述就是:放弃强一致性,追求分区容错性和可用性。具体是:

  • Basically Available,基本可用。

基本可用是指,不追求 任何时候读写都是成功的,而是 系统能够基本运行,一直提供服务。例如:在一些秒杀系统中,当最大 QPS 超过系统容量时,返回的 稍后再试,就是基本可用的一种表现。

  • Soft State,软状态。

对比数据库中的 ACID 模型,要求操作的原子性,结果的一致性,就是一种 硬状态。而 软状态 是指,允许系统中的数据存在中间状态,并且不影响系统的整体可用性。比如:数据库集群中的同步延迟问题,我们可以接受这个延迟,多个机器间的数据短时间内的不一致,就是一种 软状态

  • Eventually Consistent,最终一致。

最终一致 是指,数据不能一直是 软状态,需要在一个能接受的时间范围内,能够达到一致性。还以数据库集群为例,我们允许同步延迟,但还是要能够 在一定时间后,集群达到一致,而这个 迟到的一致 就称为 最终一致

5. Base 和 CAP 的关系

Base 是在 CAP 的基础上演化而来的。CAP 指出了 一致性、可用性、分区容错性,这三者只能选择两者,Base 是一种 AP 方案,即:在分区容错性一定存在的前提下,通过将强一致性退化为最终一致性的牺牲,来最求更好的可用性

很多分布式系统都在选择 Base 理论作为架构方式,比如:NoSQL 和 微服务,强调通过服务降级等方式保证基本可用,最求更高的可扩展性,从而保证更好的可用性。而某些对数据有强一致性要求的应用,如金融系统,则应该选择 CP 思路的架构方式。

相关文章

网友评论

      本文标题:分布式系统之 CAP 理论和 Base 理论

      本文链接:https://www.haomeiwen.com/subject/ogocphtx.html