当前位置: 首页 > news >正文

分布式系统中的CAP理论和BASE理论

目录

CAP 理论的基础名词

理论的具体内容

举例

主流注册中心的比较

总结

BASE 理论

达到最终一致性的方法


CAP 理论的基础名词

C:一致性 所有节点访问的都是同一份最新的数据副本

A:可用性 非故障的节点能在合理的时间内返回合理的响应

P:分区容错性 分布式系统出现网路分区的时候仍然能对外提供服务

注:分布式系统中,多个节点之间的网络本来是互通的,但是由于某些故障,比如说某些节点网络出现了问题,网络不互通后,整个网络就会出现被分成几块区域的情况,这就叫网络分区

理论的具体内容

对于一个分布式系统 , 我们在设计读写操作时

只能同时满足 C A P 中的两个

当发生网络分区的时候,如果我们要继续服务,那么在一致性和可用性里面我们只能选一个

所以理论上我们是不能选择 CA 架构的

选择的是 CP 或者是 AP 架构

CP : 在分布式系统能处理分区容错性的基础上满足一致性

AP:在分布式系统能处理分区容错性的基础上满足利用性

C A 时两个冲突的 如果发生了网络分区 那么满足 C 的话 要禁止其他分布式节点 即违反了 A

举例

Dubbo

架构图

我们这边的 dubbo 注册中心 Registry 时扮演了什么样的服务呢

注册中心只负责服务地址的注册与查找 相当于一个目录服务 生产者和消费者只在启动时与注册中心交互

注册中心实际上不负责服务的转发,压力比较小

主流注册中心的比较

Zookeeper 保证的是 CAP 理论中的 CP 即在分区容错性的基础上满足一致性

我们在任意时刻对 Zookeeper 对读请求都能读取到一致的结果

但是在 Leader 选举过程中服务不可用

而且会出现半数机器不用用时服务就会挂掉

Eureka 保证的是 CAP 理论中的 AP 即在分区容错性的基础上满足可用性

不存在什么 Leader 节点 所有节点都是一样的 只不过所有节点上的数据可能会不一致

Nacos 即支持 CP 也支持 AP

总结

在进行分布式系统的设计与开发中 我们更应该考虑的是系统的拓展性,可用性

首先我们要考虑是否会发生网络分区,就是各节点网络问题

如果发生了网络分区就要想办法保证 P 结合业务 在 P 的基础上在考虑该实现 C 还是 A

C 是一致性 A 是可用性

如果未发生网络分区我们要想的是如何尽可能的保证 CA

BASE 理论

BASE 理论是对 CAP 理论的延伸和补充,更加具体的来说 BASE 理论是对 AP 方案的一个补充

AP :在保证分区容错性的基础上保证的是可用性

BA :基本可用

S:软状态

E:最终一致性

BASE 理论的精髓在于

AP 只是在系统发生网络分区的时候放弃一致性,而不是永远放弃一致性

在分区恢复后还是要满足一致性

软状态就是指的是 发生网络分区后一段时间内的状态 可能是不一致的

但我们要达到最终一致性 而并不需要实时的保证数据的强一致性

达到最终一致性的方法

  • 读时修复 : 在读取数据时,检测数据的不一致,进行修复。比如 Cassandra 的 Read Repair 实现,具体来说,在向 Cassandra 系统查询数据的时候,如果检测到不同节点的副本数据不一致,系统就自动修复数据。
  • 写时修复 : 在写入数据,检测数据的不一致时,进行修复。比如 Cassandra 的 Hinted Handoff 实现。具体来说,Cassandra 集群的节点之间远程写数据的时候,如果写失败 就将数据缓存下来,然后定时重传,修复数据的不一致性。
  • 异步修复 : 这个是最常用的方式,通过定时对账检测副本数据的一致性,并修复。

http://www.dtcms.com/a/593770.html

相关文章:

  • 做网站建设的怎么赢利网站建设多少费用
  • Python字典--第1关:元组使用:这份菜单能修改吗?
  • 【S2ANet】Align Deep Features for Oriented Object Detection 译读笔记
  • 二维数组及经典案例
  • 【VMware Workstation】虚拟机网络配置流程+MobaXterm连接步骤
  • 西安微网站建设wordpress视频预览插件
  • CodeBuddy + GLM-4.6:儿童诗词宝典全栈开发实战
  • PSU过程11.2.0.4.250415
  • Nanopb基本概念
  • 微网站开发平台 知乎东家乐装修公司简介
  • 基于交替方向乘子法(ADMM)的RPCA MATLAB实现
  • redis删除一个键用del还是unlink
  • 用vue.js做网站百度区域代理
  • 好人一生平安网站哪个好抖音代运营培训
  • 前端基础面试题(Css,Html,Js,Ts)
  • 使用c#强大的SourceGenerator现对象的深克隆
  • 企业移动网站建设网站文件夹命名规则
  • 【动态链接库】一、VS下基本制作与使用
  • 百度网站排名规则长春百度快速优化
  • xpert AI工作流工具本地部署
  • SP30N06NK 30V N沟道MOSFET技术解析与应用指南
  • 深圳建站公司推荐国内平台有哪些
  • 使用DFSDM模拟看门狗做过流保护以及封波应用 LAT1612
  • 远程传输大文件的软件有哪些?
  • 北京建设官方网站渠道网络大厦
  • 鸿蒙 Next 如何使用 AVRecorder 从0到1实现视频录制功能(ArkTS)
  • 动态背景网站北京网站设计制作费用
  • LSTM模型做分类任务2(PyTorch实现)
  • 企业网站模板 简洁wordpress 水印
  • PostgreSQL模式:数据库中的命名空间艺术