秋招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(最终一致性)

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

相关推荐
华仔啊5 分钟前
Spring 配置混乱?搞懂这两个核心组件,问题真能少一半
java·后端·spring
喂完待续17 分钟前
【序列晋升】45 Spring Data Elasticsearch 实战:3 个核心方案破解索引管理与复杂查询痛点,告别低效开发
java·后端·spring·big data·spring data·序列晋升
郑重其事,鹏程万里20 分钟前
commons-exec
java
龙茶清欢21 分钟前
具有实际开发参考意义的 MyBatis-Plus BaseEntity 基类示例
java·spring boot·spring cloud·mybatis
神龙斗士24024 分钟前
Java 数组的定义与使用
java·开发语言·数据结构·算法
计算机学姐25 分钟前
基于微信小程序的扶贫助农系统【2026最新】
java·vue.js·spring boot·mysql·微信小程序·小程序·mybatis
白露与泡影25 分钟前
2025互联网大厂高频Java面试真题解析
java·开发语言·面试
forever銳26 分钟前
java中如何保证接口幂等性
java·后端
柯南二号28 分钟前
【Java后端】MyBatis 和 MyBatis-Plus (MP) 的区别
java·数据库·tomcat
斯普信专业组31 分钟前
fluent-bit使用kafka作为数据源采集问题
分布式·kafka·fluent-bit