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

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

相关推荐
码云数智-园园10 小时前
C++20 Modules 模块详解
java·开发语言·spring
程序员黑豆10 小时前
JDK 下载安装与配置详细教程
java·前端·ai编程
小宇宙Zz11 小时前
Maven依赖冲突
java·服务器·maven
swordbob11 小时前
NIO的channel中什么是 fd(File Descriptor,文件描述符)
java·开发语言·nio
咖啡八杯11 小时前
GoF设计模式——享元模式
java·spring·设计模式·享元模式
十五喵源码网11 小时前
基于springboot2+vue2的租房管理系统
java·毕业设计·springboot·论文笔记
摇滚侠11 小时前
IDEA 创建 Java 项目 手动整合 SSM 框架
java·ide·intellij-idea
源分享11 小时前
Java线程同步的多种实现方法(非常详细)
java·开发语言·jvm
Flittly12 小时前
【AgentScope Java新手村系列】(10)实战-多Agent天气助手
java·spring boot·spring
李少兄12 小时前
从原理到实战:Spring IoC/DI 核心知识体系与高频面试题全解
java·后端·spring