CAP定理和BASE理论

目录

  • CAP 定理
    • CAP 权衡
  • BASE 理论
  • ACID 和 BASE 的区别与联系

CAP 定理

CAP 理论为:一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。

  1. 一致性(Consistency)
    一致性指 “all nodes see the same data at the same time”,即更新操作成功并返回客户端完成后,所有节点在同一时间的数据完全一致。

  2. 可用性(Availability)
    可用性指“Reads and writes always succeed”,即服务一直可用,而且是正常响应时间。

  3. 分区容错性(Partition tolerance)
    分区容错性指“the system continues to operate despite arbitrary message loss or failure of part of the system”,即分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。

CAP 权衡

对于多数大型互联网应用的场景,主机众多、部署分散,而且现在的集群规模越来越大,所以节点故障、网络故障是常态,而且要保证服务可用性达到 N 个 9,即保证 P 和 A,舍弃C(退而求其次保证最终一致性)。虽然某些地方会影响客户体验,但没达到造成用户流程的严重程度。

对于涉及到钱财这样不能有一丝让步的场景,C 必须保证。网络发生故障宁可停止服务,这是保证 CA,舍弃 P。貌似这几年国内银行业发生了不下 10 起事故,但影响面不大,报到也不多,广大群众知道的少。还有一种是保证 CP,舍弃 A。例如网络故障是只读不写。

孰优孰略,没有定论,只能根据场景定夺,适合的才是最好的。

BASE 理论

BASE 理论是对 CAP 理论的延伸,核心思想是即使无法做到强一致性(Strong Consistency,CAP 的一致性就是强一致性),但应用可以采用适合的方式达到最终一致性(Eventual Consitency)。

  1. 基本可用(Basically Available)
    基本可用是指分布式系统在出现故障的时候,允许损失部分可用性,即保证核心可用。

    电商大促时,为了应对访问量激增,部分用户可能会被引导到降级页面,服务层也可能只提供降级服务。这就是损失部分可用性的体现。

  2. 软状态(Soft State)
    软状态是指允许系统存在中间状态,而该中间状态不会影响系统整体可用性。分布式存储中一般一份数据至少会有三个副本,允许不同节点间副本同步的延时就是软状态的体现。mysql replication 的异步复制也是一种体现。

  3. 最终一致性(Eventual Consistency)
    最终一致性是指系统中的所有数据副本经过一定时间后,最终能够达到一致的状态。弱一致性和强一致性相反,最终一致性是弱一致性的一种特殊情况。

ACID 和 BASE 的区别与联系

ACID 是传统数据库常用的设计理念,追求强一致性模型。BASE 支持的是大型分布式系统,提出通过牺牲强一致性获得高可用性。

ACID 和 BASE 代表了两种截然相反的设计哲学,在分布式系统设计的场景中,系统组件对一致性要求是不同的,因此 ACID 和 BASE 又会结合使用。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

GPT-4原论文详细解读(GPT-4 Technical Report)

GPT-4原论文详细解读(GPT-4 Technical Report)返回论文和资料目录 1.导读 相比之前的GPT-3.5等大型语言模型(这里可以看我的InstructGPT解读,也方便理解本文内容),GPT-4最大的不同在于变成了多模态&#…

部署大数据集群时踩过的坑 (持续更新)

大数据集群踩过的坑 前言(必看) 如果你遇到了和我一样的问题并通过搜索引擎进入这篇文章,请善用CtrlF键搜索 该自检手册仅用于自己学习使用,记录所有自己遇到的问题。如果你没有检索到你的问题,请使用Bing或Google进行搜索 该自检手册严格…

PCB生产工艺流程一:PCB分类的三大要点

PCB生产工艺流程一:PCB分类的三大要点 PCB在材料、层数、制程上的多样化以适不同的电子产品及其特殊需求。因此其种类划分比较多,以下就归纳一些通用的区别办法,来简单介绍PCB的分类以及它的制造工艺。那么我们就从它的三个方面来分析一下吧。 1、材料…

某汽车零部件企业:定期反钓鱼演练是降低企业安全风险的优选方案

客户背景 作为一家主要从事于汽车、摩托车零部件的开发、制造和销售的中日合资企业,服务的客户大多为国内汽车生产领域领先企业,旗下进出口业务较多,该汽车零部件企业需要与海外企业一直保持着电子邮件的往来,电子邮件安全十分重…

eNSP 实现VLAN间通信实验

关于本实验本实验将通过上述方法(配置Dot1q终结子接口和VLANIF接口)实现不同VLAN间的通信,其中涵盖了与这两种方法相关的原理、配置命令和验证方法。实验目的掌握配置Dot1q终结子接口的方法,实现VLAN间通信。掌握配置VLANIF接口的…

window安装Redis服务

下载地址:Releases tporadowski/redis GitHub。 Redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择,这里我们下载 Redis-x64-xxx.zip压缩包,解压后,将文件夹重新命名为 redis。 命令创建Redis服务 上述方式虽然…

王炸!ChatGPT这算是彻底打脸马云。。。

在2019年的世界人工智能大会上,马斯克和马云针对人工智能话题上演了一场精彩对话。马云:我不觉得AI是一种威胁,我不认为人工智能是很恐怖的东西,因为人类很聪明。马斯克:一般大家都会低估人工智能的能力,实…

便携式明渠流量计技术背景及应用

便携式明渠流量计 是一款对现有在线水监测系统中流量监测的对比装置。该便携式明渠流量计实现了比对在线系统的液位误差及流量误差。引导式的操作方式,可自动每两分钟记录一次液位数据,连续记录6次,同时可以累计测量10分钟的流量数据&#xf…

嘉立创EDA专业版PCB的DRC与生产输出

前期为了满足各项设计的要求,通常会设置很多约束规则,当一个PCB设计完成之后,通常要进行DRC。DRC就是检查设计是否满足所设置的规则。一个完整的PCB设计必须经过各项连接性规则检查,常见的检查包括开路及短路的检查,更…

数据库管理-第六十四期 试玩Oracle 23c免费开发者版(20230404)

数据库管理 2023-04-24第六十四期 试玩Oracle 23c免费开发者版1 环境2 操作系统配置3 安装数据库4 配置并启动数据库5 访问数据库总结第六十四期 试玩Oracle 23c免费开发者版 四月第一篇文章,今天正好Oracle放出了Oracle Database 23c Free - Developer Release&am…

Python 自动化指南(繁琐工作自动化)第二版:十六、使用 CSV 文件和 JSON 数据

原文:https://automatetheboringstuff.com/2e/chapter16/ 在第 15 章,你学习了如何从 PDF 和 Word 文档中提取文本。这些文件是二进制格式的,需要特殊的 Python 模块来访问它们的数据。另一方面,CSV 和 JSON 文件只是纯文本文件。…

Linux下C/C++ redis协议(RESP)解析

Redis是一个开源的内存键值数据存储,最常用作主数据库、缓存、消息代理和队列。Redis提供了亚毫秒的响应时间,在游戏、金融科技、广告技术、社交媒体、医疗保健和物联网等行业实现了快速而强大的实时应用。 Redis连续五年成为开发人员最喜爱的数据库。开…

从小到大排序-课后程序(JavaScript前端开发案例教程-黑马程序员编著-第4章-课后作业)

【案例4-1】 从小到大排序 一、案例描述 考核知识点 函数的定义与调用,参数传递 练习目标 掌握函数的定义与调用。掌握for循环数据处理逻辑 需求分析 给出一组数据,要求按照从小到大进行排序。 案例分析 效果如图4-1所示。从小到大排序 具体实现步骤…

Final Cut Pro for Mac(中文fcpx视频剪辑)

Final Cut Pro for Mac是一款专业的视频剪辑软件,由苹果公司开发并发布。Final Cut Pro for Mac v10.6.5中文版是最新版本,支持中文界面,为用户提供了更加便捷的操作体验。 使用Final Cut Pro for Mac,用户可以轻松地进行视频编辑…

哈希表(如何打造一个工业级的哈希表)

目录 哈希思想 哈希函数 哈希冲突 1.开放寻址法 2、链表法 解决装载因子过大的问题 选择合适的哈希冲突解决方法 哈希思想 哈希表(hashtable)是数组的一一种扩展,由数组演化而来,底层依赖数组支持按下标快速 访问元素的特性。换句话说,…

HTTP协议详解(二)

目录 1.HTTP 响应详解 1.1认识状态码(status code) 1.2 认识响应报头(header) 1.3 认识响应正文(body) 2.构造 HTTP 请求 2.1 通过form表单构造请求 2.2 通过ajax构造请求 2.3 使用第三方工具构造请求 开始之前我们先复习一下http协议格式 1.HTTP 响应详解 我们先抓包…

ChatGPT中文方式写作-chatgpt中文生成

ChatGPT是一种强大的自然语言处理技术,可以帮助人们进行各种语言任务,包括机器翻译、问答系统、自然语言生成等。在中文辅助写作上,ChatGPT也很有用武之地,下面我们将就如何通过ChatGPT实现中文辅助写作,提高文章质量和…

C语言预处理指令-宏定义、文件包含、条件编译

预处理指令简介 1.C语言在对源程序进行编译之前,会先对一些特殊的预处理指令作解释(比如之前使用的#include文件包含指令),产生一个新的源程序(这个过程称为编译预处理),之后再进行通常的编译 2.为了区分预处理指令和一般的C语句,所有预处理…

计算机科班与培训开发编程的区别在哪里?

科班、培训班、科班培训班的模式都培养了很多编程技术人员进入IT行业,有的成为某个技术领域的专家,有的成为领导层,有的一直在默默无闻的敲代码等待35岁的到来。不管那种方式入行,这些类似的情况都存在,并且未来还会一…

全链路监控:方案概述

问题背景 随着微服务架构的流行,服务按照不同的维度进行拆分,一次请求往往需要涉及到多个服务。互联网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发、可能使用不同的编程语言来实现、有可能布在了几千台…
最新文章