分布式基础理论——CAP理论和BASE理论

文章目录

      • CAP 理论
      • BASE 理论
      • 参考资料

CAP 理论

CAP定理(CAP theorem)指出,在分布式系统中,设计读写操作时只能同时满足以下三个特性中的两个:

  • 一致性(Consistency) : 所有节点访问同一份最新的数据副本。需要强调的是,这里的一致性指的是线性一致性。
  • 可用性(Availability): 非故障的节点在合理的时间内返回合理的响应(不是错误或者超时的响应)。
  • 分区容错性(Partition Tolerance) : 在出现网络分区的时候,节点之间的通信出现失败的情况,分布式系统仍然能够对外提供服务。

注意,这里的”三选二“ 理解如下:

  • 在CAP理论中,分区容错性(P)是必须满足的。因为在大规模分布式系统中,网络分区是不可避免的。

  • 在满足分区容错性的前提下,分布式系统只能在一致性(C)和可用性(A)之间进行权衡。

  • 当网络分区正常(即系统在大多数时间内处于稳定的网络状态)时,C 和 A 是可以同时满足的,因为此时无需考虑分区容错性(P)的影响。

在这里插入图片描述

因此,分布式系统理论上不可能选择 CA 架构,只能选择 CP 或者 AP 架构。因为 CA 架构的系统不再是标准的分布式系统,主数据库和从数据库不在进行同步。

  • CP 架构案例:ZooKeeper、HBase、Nacos
  • AP 架构案例:Cassandra、Eureka、Nacos

BASE 理论

BASE(Basically Available, Soft State, Eventually Consistent) 是 CAP 理论中 AP 方案的延伸,通过牺牲强一致性来获取可用性,但会保证最终一致性。由于分布式系统在CAP理论中最多只能同时满足两个特性,在实际场景中,大多数分布式系统会选择AP方案,即牺牲强一致性以确保系统的可用性和分区容错性。然而,在这种架构设计中,系统通常会采用最终一致性策略。最终一致性允许多个节点的数据在短时间内存在差异,但经过一段时间后,这些数据会自动同步,最终达到一致的状态。

BASE(BasicallyAvailable, Soft State, Eventually Consistent) 的具体特点如下:

  • Basically Available(基本可用):系统保证在大多数情况下可用,即便在某些异常情况下,部分功能可能无法正常工作,但不会导致整个系统不可用。例如,在线购物平台在高峰期可能会延迟订单处理,但用户仍然能够浏览商品和提交订单。
  • Soft State(软状态):系统中的数据状态可以在某个时间点不同步,允许不同节点之间的数据存在短暂的不一致性。这种不一致性是暂时的,最终会被解决。
  • Eventually Consistent(最终一致性):虽然系统可能在一段时间内处于不一致的状态,但经过一段时间后,所有数据节点最终会达到一致的状态。这意味着系统不会始终保持一致性,但在没有进一步的输入时,最终会达到一致性。

参考资料

《深入理解分布式系统 唐伟志》

《深入理解分布式事务:原理与实战 肖宇》

CAP & BASE理论详解 | JavaGuide

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/410842.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ssm基于微信小程序的食堂窗口自助点餐系统源码调试讲解

1. 环境搭建 JDK 1.8:确保您的系统已安装JDK 1.8,并配置好环境变量。JDK 1.8 是目前很多Java项目仍在使用的稳定版本,适用于SSM框架。Tomcat 7:安装并配置Tomcat 7作为您的Web服务器。Tomcat 7 支持Servlet 3.0和JSP 2.2&#xf…

杰发科技AC7801——Flash模拟EEP内存(2)

1. 默认配置在1000个地址存储1000个数据 配置如下 计算地址 查看地址内容,等到打印完成 计算符合,从0-999共计1000 2. 修改配置在65536地址存储65536个数据 配置还是这个 因为传进去的地址是uint16_t,因此最大值是65536,写65536…

基于Pytorch框架的深度学习PSPnet网络动物马语义分割系统源码

第一步:准备数据 动物马分割数据,总共有328张图片,里面的像素值为0和1,所以看起来全部是黑的,不影响使用 第二步:搭建模型 psp模块的样式如下,其psp的核心重点是采用了步长不同,po…

前端:html+css:伪类画箭头(实心)

一、效果图 二、代码 html <div class"rectangle">AC/DC</div> css /* 图形 */ .rectangle {position: relative;width: 50px;height: 20px;background-color: #3498db;color: white; } .rectangle:before {content: ;position: absolute;top: 0;l…

Spring Boot Web开发实践:请求与响应参数的使用方法

主要介绍了请求响应的简单参数、实体参数、数组集合参数、日期参数、路径参数等各自的使用方法&#xff01;&#xff01;&#xff01; 文章目录 前言 Postman 简单参数 原始方式 SpringBoot方式 实体参数 数组集合参数 日期参数 路径参数 总结 前言 主要介绍了请求响应的简单参…

Tkinter Checkbutton设置了一个多选,为什么初始值都是勾选的:

代码如下&#xff1a; from tkinter import *master Tk()renyuan ["唐僧", "沙僧", "悟空", "八戒"]def r_change():rec ""ci 0for el in vars:rec el.get() "、"ci 1rec "九点" rec "离…

PHP概述-特点-应用领域-如何学习

老师建议注册使用百度文心一言&#xff1b;讯飞星火大模型-AI大语言模型-星火大模型-科大讯飞&#xff1b;Kimi.ai - 帮你看更大的世界 等人工智能工具软件的一个到两个&#xff0c;也可下载文心一言、讯飞星火、kimi等APP软件使用&#xff0c;对于我们在读的大二学生来说有什么…

GPT-6曝光!阉割版「草莓」秋季兑现

夕小瑶科技说 原创 作者 | 海野 OpenAI的Q* 项目&#xff0c;也就是后来在网上沸沸扬扬的Strawberry草莓&#xff0c;终于定档于秋季上线。 据The Information爆料&#xff0c;作为GPT-4的下一代&#xff0c;Strawberry很惊艳&#xff1a; 拥有极强的推理和数学能力&#xf…

【人工智能 | 机器学习 | 理论篇】决策树(decision tree)

文章目录 1. 基本流程2. 划分选择2.1 信息增益2.2 增益率2.3 基尼系数 3. 剪枝处理3.1 预剪枝3.2 后剪枝 4. 连续与缺失值4.1 连续值处理4.2 缺失值处理 5. 多变量决策树 1. 基本流程 二分类任务决策树流程&#xff1a; 决策树&#xff1a;包含 1个根结点、若干个内部结点、若…

vue.js3+element-plus+typescript add,edit,del,search

vite.config.ts server: {cors: true, // 默认启用并允许任何源host: 0.0.0.0, // 这个用于启动port: 5110, // 指定启动端口open: true, //启动后是否自动打开浏览器 proxy: {/api: {target: http://localhost:8081/, //实际请求地址&#xff0c;数据库的rest APIschangeOr…

Maven Wrapper深入实战

概述 官网&#xff0c;GitHub。 Maven Wrapper&#xff0c;缩写为mvnw&#xff0c;是一个受Gradle Wrapper和Takari Wrapper启发而产生的Maven子项目&#xff0c;主要有以下三个用途&#xff1a; 让开发者电脑上无需安装Maven&#xff0c;也不用配置环境变量&#xff0c;即可…

【案例63】SSL RC4 加密套件支持检测 (Bar Mitzvah)修复方案

漏洞详情信息 漏洞名称 SSL RC4 加密套件支持检测 (Bar Mitzvah) 漏洞等级 高 漏洞描述 远程主机支持在一个或多个密码组中使用 RC4。 RC4 密码在伪随机字节流的生成中存在缺陷&#xff0c;导致引入了各种各样的小偏差&#xff0c;降低了其随机 性。 如果反复加密明文&am…

Linux下qt程序缺少中文字库,中文显示为框框

现象 Linux下qt5.9编译程序&#xff0c;运行时候界面上的中文显示一个一个的框框。 如图 原因 开发板里缺少中文字库或者qt字库环境未正常配置导致的。 解决方法一&#xff1a; 如果系统中存在中文字库&#xff0c;一般是在/usr/share/下有一个fonts文件夹 配置qt中文字库路…

【雷电防护】同为科技为国科大构建雷电防护系统

中国科学院大学&#xff08;University of Chinese Academy of Sciences&#xff09;&#xff0c;以下简称“国科大”&#xff0c;主校区位于北京市&#xff0c;是一所以科教融合为办学模式、研究生教育为办学主体的创新型大学&#xff0c;是国家“双一流”建设高校&#xff0c…

go+gin+vue入门

后端框架 1、安装go、goland 2、创建空项目 3、下载要用的包&#xff1a;命令行输入go get -u github.com/xxxx 4、安装mysql数据库&#xff0c;使用navicat创建数据库。 5、按照项目框架搭建目录、文件、代码&#xff1a;如router、model… 6、运行测试&#xff0c;go run ma…

openshift node NotReady kubelet http: TLS handshake error

文章目录 问题现象解决方法 问题现象 openshift 集群 node 节点 notready $ oc get node NAME STATUS ROLES AGE VERSION master1.ocp4.demo.com Ready control-plane,master 4d14h v1.29.76abe8a1 master2.ocp4…

什么是响应式?

表达式: 用于表达式进行插值,渲染到页面之中 语法: {{ 表达式 }} 案例 <template><h1>{{ arr[2] }}</h1><h1>{{ 9 5 }}</h1><h1>{{ "神奇" }}</h1> </template><script setup> import { ref } from vue; …

C++ | Leetcode C++题解之第375题猜数字大小II

题目&#xff1a; 题解&#xff1a; class Solution { public:int getMoneyAmount(int n) {vector<vector<int>> f(n1,vector<int>(n1));for (int i n - 1; i > 1; i--) {for (int j i 1; j < n; j) {f[i][j] j f[i][j - 1];for (int k i; k &l…

刚开始学习软件编程,如何克服编程学习中的挫折感?

编程学习之路往往充满挑战&#xff0c;即便是最优秀的程序员也会遇到挫折。克服挫折感的关键在于心态、方法和持续的学习。以下是一些通俗易懂的建议和案例&#xff0c;展示了如何在遇到编程难题时保持积极态度。 1. 接受挫折是成长的一部分 编程是一个不断学习和成长的过程。…

【Java设计模式】Bridge模式:在Java中解耦抽象与实现

文章目录 【Java设计模式】Bridge模式&#xff1a;在Java中解耦抽象与实现一、概述二、Bridge设计模式的别名三、Bridge设计模式的意图四、Bridge模式的详细解释及实际示例五、Java中Bridge模式的编程示例六、Bridge模式类图七、Java中何时使用Bridge模式八、Java中Bridge模式的…