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

【微服务】面试题 5、分布式系统理论:CAP 与 BASE 详解

分布式系统理论:CAP 与 BASE 详解

在这里插入图片描述

一、CAP 定理

  1. 背景与定义:1998 年由加州大学科学家埃里克·布鲁尔提出,分布式系统存在一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)三个指标,且不能同时满足,此为 CAP 定理。

  2. 指标解析
    在这里插入图片描述

    • 一致性:用户访问分布式系统任意节点获取的数据需一致。例如,两个初始数据相同的节点,当其中一个节点数据变更后,需进行数据同步,类似 MySQL 主从复制。

    • 在这里插入图片描述

    • 可用性:用户访问集群健康节点必须能得到响应,而非超时或拒绝。如多节点集群中,若某节点阻塞或拒绝访问,则该节点不可用。

    • 分区容错性:因网络故障等致部分节点与其他节点断连形成独立分区时,系统仍要持续对外服务。但分区出现后,保证一致性可能牺牲可用性,反之亦然。如网络故障使节点分区后,跨分区数据同步困难,若保证一致性可能使部分节点在数据同步期间不可用。

在这里插入图片描述

二、BASE 理论

在这里插入图片描述

  1. 定位与内涵:是对 CAP 问题的解决思路,包含基本可用(Basically Available)、软状态(Soft state)、最终一致性(Eventually consistent)三个思想。
  2. 分布式事务应用示例
    • AP 模式:在订单、账户、库存微服务的分布式事务场景中,若选择 AP,各微服务分别执行提交操作,可能出现部分成功部分失败导致数据不一致的软状态。之后事务协调器发现失败事务,会通知已提交事务进行逆向操作恢复数据,实现最终一致性。
    • CP 模式:各子事务执行但不提交,相互等待并向事务协调器上报执行情况。若全部成功,协调器通知提交;若有失败,协调器通知回滚,保证强一致性,但在等待过程中各服务处于弱可用状态,因为会锁定资源影响其他线程响应。

三、面试回答要点

  1. CAP 回答:解释 CAP 包含一致性、可用性、分区容错性。强调分布式系统网络连接必然产生分区问题,此时一致性和可用性无法同时满足,只能在 CP 或 AP 中选择。
  2. BASE 回答:说明 BASE 包含基本可用、软状态、最终一致性。以分布式事务为例,若选择最终一致(AP 思想),子事务分别执行提交后处理不一致情况;若选择强一致(CP 思想),子事务执行后等待统一提交或回滚,等待期间系统软可用。

相关文章:

【微服务】面试题 5、分布式系统理论:CAP 与 BASE 详解

分布式系统理论:CAP 与 BASE 详解 一、CAP 定理 背景与定义:1998 年由加州大学科学家埃里克布鲁尔提出,分布式系统存在一致性(Consistency)、可用性(Availability)、分区容错性(Part…...

第十二章:算法与程序设计

文章目录: 一:基本概念 1.算法与程序 1.1 算法 1.2 程序 2.编译预处理 3.面向对象技术 4.程序设计方法 5.SOP标志作业流程 6.工具 6.1 自然语言 6.2 流程图 6.3 N/S图 6.4 伪代码 6.5 计算机语言 二:程序设计 基础 1.常数 …...

RAG技术:是将知识库的文档和问题共同输入到LLM中

RAG技术 RAG技术是将知识库的文档和问题共同输入到LLM中 RAG技术是先从知识库中检索出与问题相关的文档片段,然后将这些检索到的文档片段与问题一起输入到LLM中进行回答。具体过程如下: 文本分块 由于LLM的上下文窗口有限,需要将长文本资料分割成较小的块,以便LLM能够有…...

持续集成 01|Gitee介绍、Pycharm使用Gitee

目录 一、理论 二、 git的简介与安装 三、Gitee 1、注册网易163邮箱 2、注册Gitee账号 3、git和gitee管理代码工作原理 三、PyCharm安装配置Gitee 四、Pycharm使用Gitee插件的五种场景 1、将 Gitee的新仓库 Checkout(检出)到 Pycharm中 2、推送…...

信息安全、网络安全和数据安全的区别和联系

信息安全、网络安全和数据安全是信息安全领域的三大支柱,它们之间既存在区别又相互联系。以下是对这三者的详细比较: 一.区别 1.信息安全 定义 信息安全是指为数据处理系统建立和采用的技术和管理的安全保护,保护计算机硬件、软件和数据不…...

C++实现设计模式---抽象工厂模式 (Abstract Factory)

抽象工厂模式 (Abstract Factory) 抽象工厂模式 是一种创建型设计模式,提供一个接口,用于创建一组相关或互相依赖的对象,而无需指定它们的具体类。 意图 提供一个创建一组相关对象的接口,而无需指定它们的具体类。解决产品对象之…...

K8S开启/关闭审计日志

K8S默认禁用审计 开启/关闭 k8s 审计日志 默认 Kubernetes 集群不会输出审计日志信息。通过以下配置,可以开启 Kubernetes 的审计日志功能。 准备审计日志的 Policy 文件配置 API 服务器,开启审计日志重启并验证 准备审计日志 Policy 文件 apiVersio…...

css盒子水平垂直居中

目录 1采用flex弹性布局: 2子绝父相margin:负值: 3.子绝父相margin:auto: 4子绝父相transform: 5通过伪元素 6table布局 7grid弹性布局 文字 水平垂直居中链接:文字水平垂直居中-CSDN博客 以下为盒子…...

px、em 和 rem 的区别:深入理解 CSS 中的单位

文章目录 前言一、px - 像素 (Pixel)二、em - 相对父元素字体大小 (Ems)三、rem - 相对于根元素字体大小 (Root Ems)四、综合比较结语 前言 在CSS中,px、em和rem是三种用于定义尺寸(如宽度、高度、边距、填充等)的长度单位。它们各自有不同的…...

基于STM32设计的粮食仓库(粮仓)环境监测系统

一、前言 1.1 项目开发背景 随着现代农业的发展和粮食储存规模的扩大,粮仓环境的智能化监控需求日益增长。传统的粮仓管理方式通常依赖人工检测和定期巡查,效率低下且容易出现疏漏,无法及时发现潜在问题,可能导致粮食受潮、霉变…...

【后端面试总结】tls中.crt和.key的关系

tls中.crt和.key的关系 引言 在现代网络通信中,特别是基于SSL/TLS协议的加密通信中,.crt和.key文件扮演着至关重要的角色。这两个文件分别代表了数字证书和私钥,是确保通信双方身份认证和数据传输安全性的基石。本文旨在深入探讨TLS中.crt和…...

日拱一卒(20)——leetcode学习记录:大小为 K 且平均值大于等于阈值的子数组数目

一、题目 给定数组,统计数组中长度为k的子数组且该子数组的平均值大于threshold的数量 二、思路 滑动窗思路,计算长度为k的滑动窗的平均值,关键点在于,每滑动一次,只需要去掉头增加尾,而不需要重新全部计…...

项目练习:若依管理系统字典功能-Vue前端部分

文章目录 一、情景说明二、若依Vue相关代码及配置1、utils代码2、components组件3、api接口代码4、Vuex配置5、main.js配置 三、使用方法1、html部分2、js部分 一、情景说明 我们在做web系统的时候,肯定会遇到一些常量选择场景。 比如,性别:…...

apache-skywalking-apm-10.1.0使用

apache-skywalking-apm-10.1.0使用 本文主要介绍如何使用apache-skywalking-apm-10.1.0,同时配合elasticsearch-8.17.0-windows-x86_64来作为存储 es持久化数据使用。 步骤如下: 一、下载elasticsearch-8.17.0-windows-x86_64 1、下载ES(elasticsear…...

计算机视觉算法实战——视频分析(Video Analysis)

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​​​​​​ ​​​​​​​​​​​​ ​​​​​ 视频分析是计算机视觉中的一个重要领域,旨在从视频数据中提取有用的信息&…...

全网首发:编译libssh,产生类似undefined reference to `EVP_aes_256_ctr@OPENSSL_1_1_0‘的大量错误

具体错误 前面和后面的: /opt/linux/x86-arm/aarch64-mix210-linux/host_bin/../lib/gcc/aarch64-linux-gnu/7.3.0/../../../../aarch64-linux-gnu/bin/ld: warning: libcrypto.so.1.1, needed by ../lib/libssh.so.4.10.1, not found (try using -rpath or -rpat…...

用python实战excel和word自动化

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 python实现excel和word自动化--批量处理 前言--需求快要期末了需要,提交一个年级的学生成绩数据,也就是几百份。当前我们收集了一份excel表格&#xf…...

【云计算】OpenStack云计算平台

OpenStack云计算平台框架搭建 1.先换源 先换成阿里源: curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 2.安装框架 yum -y install centos-release-openstack-train 3.安装客户端 yum -y install python-openstackclient 但…...

好用的php商城源码有哪些?

选择一个优秀的商城工具,能更好地帮助大家建立一个好用的商城系统。目前比较流行的都是开源PHP商城系统,那么现实中都有哪些好用的PHP商城源码值得推荐呢?下面就带大家一起来了解一下。 1.TigShop 【推荐指数】:★★★★★☆ 【推…...

docker安装Nginx UI

开源地址:nginx-ui/README-zh_CN.md at dev 0xJacky/nginx-ui GitHub docker run -dit \ --namenginx-ui \ --restartalways \ -e TZAsia/Shanghai \ -v /Users/xiaoping/docker/appdata/nginx:/etc/nginx \ -v /Users/xiaoping/docker/appdata/nginx-ui:/etc/ng…...

Qwen2-VL-2B-Instruct环境配置详解:Anaconda虚拟环境管理与依赖冲突解决

Qwen2-VL-2B-Instruct环境配置详解:Anaconda虚拟环境管理与依赖冲突解决 每次准备跑一个新的大模型,最头疼的往往不是模型本身,而是环境配置。特别是像Qwen2-VL-2B-Instruct这种多模态模型,它需要PyTorch、Transformers、CUDA&am…...

只剩马斯克自己!xAI 11个联合创始人跑光了

11位联合创始人三年出清、只剩马斯克一人,xAI这场「天团散伙」背后,藏着AI时代最残酷的人才战争与帝国裂缝。3月28日,Ross Nordeen悄悄摘掉了自己在X平台上的xAI员工认证标识。他发了一张照片——「触碰一些草」。没有长篇告别信,…...

PyTorch 3.0静态图分布式训练插件下载与安装(官方未公开的--enable-static-graph标志使用手册)

第一章:PyTorch 3.0静态图分布式训练插件下载与安装PyTorch 3.0 并非官方发布的正式版本(截至 2024 年,PyTorch 最新稳定版为 2.3.x),因此“PyTorch 3.0 静态图分布式训练插件”属于概念性技术预研组件,目前…...

从磁力线到最小磁阻:手把手拆解一个微型直流电机的内部‘磁路战争’

从磁力线到最小磁阻:手把手拆解一个微型直流电机的内部‘磁路战争’ 拆开一枚硬币大小的玩具电机,你会看到一场无声的物理博弈——磁力线像急于回家的士兵,不断寻找最短路径;而转子则是这场战役的指挥官,通过精确的旋…...

RxDataSources编辑功能详解:如何实现TableView的增删改操作

RxDataSources编辑功能详解:如何实现TableView的增删改操作 【免费下载链接】RxDataSources UITableView and UICollectionView Data Sources for RxSwift (sections, animated updates, editing ...) 项目地址: https://gitcode.com/gh_mirrors/rx/RxDataSources…...

Artichoke 未来展望:这个创新 Ruby 实现的路线图和愿景 [特殊字符]

Artichoke 未来展望:这个创新 Ruby 实现的路线图和愿景 🚀 【免费下载链接】artichoke 💎 Artichoke is a Ruby made with Rust 项目地址: https://gitcode.com/gh_mirrors/ar/artichoke Artichoke 是一个用 Rust 编写的创新 Ruby 实现…...

OpenClaw 性能优化:提升响应速度和资源效率

一、引言:OpenClaw 性能挑战与优化价值1.1 为什么需要性能优化OpenClaw 作为运行在用户自有设备上的个人 AI 助手框架,其性能直接影响用户体验:响应延迟:用户发送消息到收到回复的时间资源占用:CPU、内存、磁盘的使用效…...

Vivado实战:从零封装自定义接口IP核的完整流程

1. 为什么需要封装自定义IP核 第一次接触FPGA开发时,我总喜欢把整个工程的所有代码都堆在一个项目里。直到某天需要复用之前的HDMI显示模块时,才发现要手动复制几十个文件,还得逐个修改端口连接。这种重复劳动让我意识到:封装IP核…...

对于对话中的用户长期兴趣建模,OpenClaw 的序列推荐方法?

关于对话系统中如何捕捉用户长期兴趣这件事,业内琢磨了挺长时间。传统的序列推荐模型,比如那些基于循环神经网络或者注意力机制的,往往更擅长处理短期的、密集的交互序列。它们像是一个敏锐的现场观察者,能立刻抓住你刚才点击了什…...

Hunyuan-MT-7B效果展示:学术论文摘要英→中翻译在专业术语一致性表现

Hunyuan-MT-7B效果展示:学术论文摘要英→中翻译在专业术语一致性表现 1. 引言:专业翻译的技术挑战 学术论文翻译一直是机器翻译领域的难点,特别是专业术语的一致性保持。传统翻译工具在处理学术文献时,经常出现术语翻译不统一、…...