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

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

相关推荐
Lyyaoo.几秒前
【JAVA基础面经】线程的状态
java·开发语言
Hello小赵1 分钟前
C语言如何自定义链接库——编译与调用
android·java·c语言
希望永不加班5 分钟前
SpringBoot 配置绑定:@ConfigurationProperties
java·spring boot·后端·spring
悟空码字6 分钟前
MySQL性能优化的天花板:10条你必须掌握的顶级SQL分析技巧
java·后端·mysql
indexsunny9 分钟前
互联网大厂Java面试实战:Spring Boot、MyBatis与Kafka在电商场景中的应用
java·spring boot·面试·kafka·mybatis·电商·技术栈
殷紫川14 分钟前
CompletableFuture 异步编程全解:核心能力、编排方案、异常处理与超时控制
java
ss27318 分钟前
致Java初学者的一封信
java·开发语言
white-persist19 分钟前
【vulhub spring CVE-2018-1270】CVE-2018-1270 Spring Messaging 远程命令执行漏洞 完整复现详细分析解释
java·服务器·网络·数据库·后端·python·spring
潇洒畅想27 分钟前
1.1 从∑到∫:用循环理解求和与累积
java·数据结构·python·算法
维齐洛波奇特利(male)1 小时前
@Pointcut(“execution(* com.hdzx..*(..))“)切入点与aop 导致无限循环
java·开发语言