CAP与BASE分布式理论

news/2024/11/16 21:19:27/

CAP理论

  • C:Consistency 一致性:指强一致性,分布式系统中的所有节点在同一时刻具有同样的值、都是最新的数据副本,一致性保证了不管向哪台服务器写入数据,其他的服务器能实时同步数据 强一致性:写入数据的时候,要不全部节点都写入成功,要不都写入失败(类似数据库的事务性)。读取数据的时候,从哪个节点上都读取到最新的值。即所有节点时刻保持一样的值。
  • A:Availability 可用性:部分节点宕机不影响整个集群对外提供服务,每次向未故障的节点发送请求,服务节点总能保证在有限的时间内处理完成并进行响应,从用户角度来看就是不会出现系统操作失败或者访问超时等问题,但是系统内部可能会出现网络延迟等问题 可用性:系统对外提供的服务一直处于可用的状态。用户每一次请求都能返回正确的结果。
  • P:Partition Tolerance 分区容错性:由于网络的问题错综复杂,如果某个节点因为网络等问题造成数据不一致,或者数据延迟很久才同步过来,虽然会影响部分节点数据的时效性,但是服务节点依然是可用的,分布式系统要能容忍这种情况的,也就是说,尽管网络上有部分消息丢失,但系统仍然可继续工作。 分区容错性:集群的节点之间会发生通信,由于网络原因,集群通信出现问题。此时系统仍然能对外提供服务

一个分布式系统无法同时满足这三个条件,只能满足两个。P是必须的,一般为CP和AP。

P必须:分布式系统必然有多个节点之间通信,网络通信不能保证100%正常,所以P是必须的。放弃P就变成了单机系统

CP:不保证一直对外提供服务。如zookeeper故障,在恢复阶段无法进行读写。

AP:节点之间短时间内存在数据差异。如redis集群发生网络故障,每个节点都能对外提供服务,但是数据不一致。

CAP之间的取舍不是针对一个系统。一个系统存在多种数据,针对不同数据使用CAP做出取舍。

选择CP或者AP,也不是完全放弃另一个。故障恢复后也要想办法恢复C或者A。

BASE理论

BASE 理论是指,Basically Available(基本可用)、Soft-state( 软状态)、Eventual Consistency(最终一致性),是基于CAP定理演化而来,是对CAP中一致性和可用性权衡的结果。

核心思想:即使无法做到强一致性,但每个业务根据自身的特点,采用适当的方式来使系统达到最终一致性。

  • 基本可用:分布式系统在出现故障的时候,允许损失部分可用性,保证核心可用。但不等价于不可用。比如:搜索引擎0.5秒返回查询结果,但由于故障,2秒响应查询结果;网页访问过大时,部分用户提供降级服务等。
  • 软状态:软状态是指允许系统存在中间状态,并且该中间状态不会影响系统整体可用性。即允许系统在不同节点间副本同步的时候存在延时。
  • 最终一致性:系统中的所有数据副本经过一定时间后,最终能够达到一致的状态,不需要实时保证系统数据的强一致性。最终一致性是弱一致性的一种特殊情况。

参考:

https://blog.csdn.net/sinat_34814635/article/details/138647619


http://www.ppmy.cn/news/1547543.html

相关文章

C++11新特性:lambda表达式,包装器,新的类功能

1. lambda表达式 1.1 基本语法 lambda表达式本质上是一个匿名函数对象,但是和普通函数不一样他可以定义在函数内部。 lambda表达式使用层而言没有类型,所以我们一般使用auto或者模板参数定义的对象去接收lambda对象。 lambda表达式的格式如下&#x…

高级java每日一道面试题-2024年11月04日-Redis篇-Redis如何做内存优化?

如果有遗漏,评论区告诉我进行补充 面试官: Redis如何做内存优化? 我回答: 在Java高级面试中,关于Redis如何做内存优化的问题,可以从以下几个方面进行详细解答: 一、Redis内存优化概述 Redis内存优化主要是指通过一系列策略和技术&#…

数据结构-二叉树及其遍历

🚀欢迎来到我的【数据结构】专栏🚀 🙋我是小蜗,一名在职牛马。🐒我的博客主页​​​​​​ ➡️ ➡️ 小蜗向前冲的主页🙏🙏欢迎大家的关注,你们的关注是我创作的最大动力🙏🙏🌍前言 本篇文章咱们聊聊数据结构中的树,准确的说因该是只说一说二叉树以及相…

蓝桥杯每日真题 - 第13天

题目:(删边问题) 题目描述(14届 C&C B组F题) 解题思路: 图的构建:使用邻接链表表示图,边的起点和终点分别存储在数组中,以支持高效的遍历。 Tarjan算法&#xff1a…

SQL Server 查询设置 - LIKE/DISTINCT/HAVING/排序

目录 背景 一、LIKE - 模糊查询 1. 通配符 % 2. 占位符 _ 3. 指定集合 [] 3.1 表示否定 ^ 3.2 表示范围 - 4. 否定 NOT 二、DISTINCT - 去重查询 三、HAVING - 过滤查询 四、小的查询设置 1. ASC|DESC - 排序 2. TOP - 限制 3. 子查询 4. not in - 取补集&…

STM32完全学习——F407ZGT6点亮LED

一、寄存器描述 我们想要点亮LED,无非就是对于寄存器的一些设置,主要分为两步,首先是需要打开相应GPIO的时钟,这是因为STM32在上电后,每个外设的时钟默认都是关闭的,需要我们手动打开。其次就是对GPIO的一…

消息中间件分类

消息中间件(Message Middleware)是一种在分布式系统中实现跨平台、跨应用通信的软件架构。它基于消息传递机制,允许不同系统、不同编程语言的应用之间进行异步通信。 常见的消息中间件类型包括: 1. JMS(Java Message S…

英伟达基于Mistral 7B开发新一代Embedding模型——NV-Embed-v2

我们介绍的 NV-Embed-v2 是一种通用嵌入模型,它在大规模文本嵌入基准(MTEB 基准)(截至 2024 年 8 月 30 日)的 56 项文本嵌入任务中以 72.31 的高分排名第一。此外,它还在检索子类别中排名第一(…