秋招Day19 - 分布式 - 理论

说说CAP原则?

在一个分布式系统中,一致性,可用性、分区容错性只能同时满足两个。

|----------------------------|-----------------------------------------------------------|
| Partition tolerance(分区容错性) | 分布式系统在遇到任何网络分区故障的时候,仍然能够对外提供满足一致性 / 可用性的服务,除非整个网络环境都发生了故障 |

为什么CAP不可兼得呢?

对于分布式系统,网络分区是必然存在的,因为分布式系统都是跨网络分区部署的,所以分区容错性必然要满足。

然而在分区容错性满足的前提下,一致性和可用性只能二选一。

  • 如果满足一致性,那么必须获取最新数据,当网络分区故障发生时,就可能会发生拒绝服务的情况
  • 如果满足可用性,那么就不能拒绝服务,当网络分区故障发生时,就无法返回最新数据,只能返回旧数据

CAP对应的模型和应用?

CA without P:分布式系统中理论上P是必须满足的,但是这里指的是各子系统各自满足CA。集群数据库、xFS文件系统

CP without A:放弃 A(可用),相当于每个请求都需要在 Server 之间强一致,而 P(分区)会导致同步时间无限延长,如此 CP 也是可以保证的。很多传统的数据库分布式事务都属于这种模式。

CP 模型的常见应用:

  • 分布式数据库
  • 分布式锁

AP withou C:要高可用并允许分区,则需放弃一致性。一旦分区发生,节点之间可能会失去联系,为了高可用,每个节点只能用本地数据提供服务,而这样会导致全局数据的不一致性。现在众多的 NoSQL 都属于此类。

AP 模型常见应用:

  • Web 缓存
  • DNS

BASE理论了解吗?

BASE(Basically Available、Soft state、Eventual consistency)是基于 CAP 理论逐步演化而来的,核心思想是即便不能达到强一致性(Strong consistency),也可以根据应用特点采用适当的方式来达到最终一致性(Eventual consistency)的效果。

BASE 的主要含义:

  • Basically Available(基本可用)

什么是基本可用呢?假设系统出现了不可预知的故障,但还是能用,只是相比较正常的系统而言,可能会有响应时间上的损失,或者功能上的降级。

  • Soft State(软状态)

什么是硬状态呢?要求多个节点的数据副本都是一致的,这是一种"硬状态"。

软状态也称为弱状态,相比较硬状态而言,允许系统中的数据存在中间状态,并认为该状态不影响系统的整体可用性,即允许系统在多个不同节点的数据副本存在数据延时。

  • Eventually Consistent(最终一致性)

上面说了软状态,但是不应该一直都是软状态。在一定时间后,应该到达一个最终的状态,保证所有副本保持数据一致性,从而达到数据的最终一致性。这个时间取决于网络延时、系统负载、数据复制方案设计等等因素。

相关推荐
顾漂亮18 分钟前
Token快过期的三种续期方案
java·spring·状态模式
牢七2 小时前
mwf攻防。
java
不爱编程的小九九2 小时前
小九源码-springboot088-宾馆客房管理系统
java·开发语言·spring boot
OxYGC3 小时前
[RabbitMQ] 最新版本深度解析:4.0+ 新特性、性能飞跃与生产实践(2025 年更新)
分布式·rabbitmq
Pluto_CSND4 小时前
Java实现gRPC双向流通信
java·开发语言·单元测试
songx_994 小时前
idea建有servlet类的web项目
java·servlet·intellij-idea
武子康4 小时前
Java-154 深入浅出 MongoDB 用Java访问 MongoDB 数据库 从环境搭建到CRUD完整示例
java·数据库·分布式·sql·mongodb·性能优化·nosql
原来是猿4 小时前
谈谈环境变量
java·开发语言
oioihoii5 小时前
深入理解 C++ 现代类型推导:从 auto 到 decltype 与完美转发
java·开发语言·c++