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

《分布式技术原理与算法解析》学习笔记Day20

CAP理论

什么是CAP理论?

CAP理论用来指导分布式系统设计,以保证系统的可用性、数据一致性等。

  • C,Consistency,一致性,指所有节点在同一时刻的数据是相同的,即更新操作执行结束并响应用户完成后,所有节点存储的数据会保持相同。
  • A,Availability,可用性,指系统提供的服务一直处于可用状态,对于用户的请求可即时响应。
  • P,Partition Tolerance,分区容错性,指在分布式系统遇到网络分区的情况下,仍然可以响应用户的请求。网络分区是指因为网络故障导致网络不连通,不同节点分布在不同的子网络中,各个子网络内网络正常。

一致性、可用性和分区容错性是分布式系统的三个特征。

CAP理论是指在分布式系统中,C、A、P这三个特征不能同时满足,只能满足其中两个。

如何平衡C、A和P?

在实际场景中,网络环境不可能百分百不出故障,比如网络拥塞、网卡故障等,都会导致网络故障或者不通,从而导致节点之间无法通信,或者集群中节点被划分成多个分区,分区中的节点之间可以通信,但是分区之间是不能通信的。

这种由网络故障导致的集群分区情况,被称为网络分区

保证一致性C和可用性A(CA)

在分布式系统中,现有的网络基础设施无法做到始终保持稳定,网络分区难以避免,牺牲分区容错性P,就相当于放弃部分分布式系统,因此在分布式系统中,是不需要考虑CA模式的。

但是在单点系统或者单机系统中,CA需求是可以满足的,例如大部分关系型数据库,如果部署在单台机器上,因为不存在网络通信,所以是可以保证CA的。

保证一致性C和分区容错性P(CP)

如果一个分布式场景需要很强的数据一致性,或者该场景可以容忍系统长时间没有响应,那么放弃可用性A,保留一致性C是比较合适的。

一个保证CP的分布式系统,一旦发生网络分区会导致数据无法同步的情况,这时需要牺牲系统的可用性,降低用户体验,直到节点数据达到一致后再提供服务。

一般涉及到金融相关的场景,在任何时候都需要保证强一致,因此要保证CP。

保证CP的系统包括Redis、HBase、ZooKeeper等。

例如,ZooKeeper集群包括Leader节点和Follower节点,Leader节点专门负责处理用户的写请求:

  • 当用户向节点发送写请求时,如果请求的节点是Leader,那么直接处理请求。
  • 如果请求的节点是Follower,那么该节点会将请求转给Leader,然后Leader会向所有的Follower发出一个Proposal,等超过一半的节点统一后,Leader才会提交这次写操作,从而保证数据的强一致性。

当ZooKeeper集群中出现网络分区,如果其中一个分区的节点数大于集群节点数的一半,那么这个分区可以再选出一个Leader,仍然对外提供服务,但是在选出Leader之前,系统是不可用的;如果形成的分区中,没有一个分区的节点数大于集群节点总数的一半,那么系统不能正常对外提供服务,必须等待网络恢复后,才能正常提供服务。

保证可用性A和分区容错性P(AP)

如果一个分布式系统需要很高的可用性,或者说在网络状况不好的情况下,允许数据暂时不一致,那么可以牺牲一定的一致性。

这时网络分区出现后,各节点之间的数据无法马上同步,为了保证高可用,分布式系统需要即刻响应用户请求,但此时某些节点还没有拿到最新数据,只能将本地旧的数据返回给用户,从而产生数据不一致的情况。

适合AP的场景有很多,例如查询网站、电商中的商品查询等,这样的系统用户体验更加重要,需要保证系统的可用性。

保证AP的系统包括CoachDB、Eureka、Cassandra、DynamoDB等。

下面是关于CA、CP和AP的详细比较。
在这里插入图片描述

CAP和ACID

ACID是数据库事务中常见的理论,它和CAP是两回事:

  • ACID中的A是指“原子性”,强调事务要么执行成功,要么执行失败;CAP中的A是指“可用性”,表示系统提供的服务一直处于可用状态,可以响应用户的请求。
  • ACID中的C是指事务执行前后,数据的完整性保持一致或者满足完整性约束;CAP中的C强调的是数据一致性,集群中各节点之间通过复制技术保证数据在任意时刻都是相同的。

相关文章:

《分布式技术原理与算法解析》学习笔记Day20

CAP理论 什么是CAP理论? CAP理论用来指导分布式系统设计,以保证系统的可用性、数据一致性等。 C,Consistency,一致性,指所有节点在同一时刻的数据是相同的,即更新操作执行结束并响应用户完成后&#xff…...

【2023-2-23】FastDeploy 安装教程

【2023-2-22】FastDeploy 安装编译教程 该测试 FastDeploy CPU版本。 1. fastDeploy库编译 1.1 官方预编译库下载 预编译库下载安装 1.2 自定义CPU版本库编译 官方编译FastDeploy教程 CMakeGUI VS 2019 IDE编译FastDeploy 本人编译教程 CMAKE_CONFIGURATION_TYPES 属性设…...

rollup.js 一个简单实用的打包工具

最近在看vue3相关的知识的时候,发现了一个新的打包工具,至少于我而言是新鲜的。它就是rollup.js。一说到JS打包、合并、压缩、模块处理等都会想到webpack,这是王者,当然入门的难度偏高。而vue3中搭配的vite运行速度确实非常快&…...

数据结构与算法之最小爬楼梯费用动态规划

继续上一道题目,在上一道题目的基础之上,我们来解决这一道爬楼梯最小费用题。一.题目描述二.思路(动态规划五部曲)确定dp数组以及下标的含义使用动态规划,就要有一个数组来记录状态,本题只需要一个一维数组dp[i]就可以了。dp[i]的…...

阿里云ACA认证如何获取?

获取阿里云ACA(Alibaba Cloud Certification Associate)认证,需要按照以下步骤进行操作: 注册阿里云账号。如果您还没有阿里云账号,请先注册一个账号。登录阿里云官网。登录后,进入阿里云认证中心。选择AC…...

【Python入门第十六天】Python If ... Else

Python 条件和 If 语句 Python 支持来自数学的常用逻辑条件&#xff1a; 等于&#xff1a;a b不等于&#xff1a;a ! b小于&#xff1a;a < b小于等于&#xff1a;a < b大于&#xff1a;a > b大于等于&#xff1a;a > b 这些条件能够以多种方式使用&#xff0c…...

两数之和的解法

给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案…...

领导催我优化SQL语句,我求助了ChatGPT。这是ChatGPT给出的建议,你们觉得靠谱吗

作为一个程序员&#xff0c;无论在面试还是工作中&#xff0c;优化SQL都是绕不过去的难题。 为啥&#xff1f;工作之后才会明白&#xff0c;随着公司的业务量增多&#xff0c;SQL的执行效率对程系统运行效率的影响逐渐增大&#xff0c;相对于改造代码&#xff0c;优化SQL语句是…...

ArcGIS手动分割矢量面要素从而划分为多个面部分的方式:Cut Polygons Tool

本文介绍在ArcGIS下属ArcMap软件中&#xff0c;通过“Cut Polygons Tool”工具&#xff0c;对一个面要素矢量图层加以手动分割&#xff0c;从而将其划分为指定形状的多个部分的方法。 对于一个面要素矢量文件&#xff0c;有时我们需要对其加以划分&#xff0c;通过手动勾勒新的…...

【LeetCode】剑指 Offer 13. 机器人的运动范围 p92 -- Java Version

题目链接&#xff1a;https://leetcode.cn/problems/ji-qi-ren-de-yun-dong-fan-wei-lcof/ 1. 题目介绍&#xff08;13. 机器人的运动范围&#xff09; 地上有一个m行n列的方格&#xff0c;从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动&#xff0…...

[oeasy]python0091_仙童公司_八叛逆_intel_8080_altair8800_牛郎星

编码进化 个人电脑 计算机 通过电话网络 进行连接 极客 利用技术 做一些有趣的尝试 极客文化 是 认真研究技术的 文化 计算机 不再是 高校和研究机构高墙里面的 神秘事物而是 生活中常见的 家用电器 ibm 蓝色巨人脚步沉重 dec 小型机不断蚕食低端市场甚至组成网络干掉大型机…...

crontab 执行脚本报错,手动执行脚本正常的解决方法

一、出现的问题 有一个守护脚本XXX.sh&#xff0c;需要使用oracle用户在linux上配置定时任务&#xff0c;每1分钟检查执行一次。但是发现该脚本使用oralce用户手动启动没问题&#xff0c;能正常把程序启动起来&#xff0c;而使用crontab并没有把程序启动起来。 二、排查分析问…...

扎心话题 | 设计院背后的潜规则你知道吗?

大家好&#xff0c;我是建模助手。 大家都知道&#xff0c;在过去的2022年经济是真难&#xff01;以小编所在的广东为例&#xff0c;全年GDP增长仅1.9%。 这个数据足以呈现一个社会现象——不仅消费力咔咔下降&#xff0c;各行各业更有不同程度地嗝屁。这其中也包括一些设计院…...

【JavaEE初阶】第二节.多线程( 进阶篇 ) 锁的优化、JUC的常用类、线程安全的集合类

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、synchronized的优化操作 1.1 锁膨胀/锁升级 1.2 锁消除 1.3 锁粗化二、JUC 2.1 Callable接口 2.2 ReentrantLock类&…...

大数据核心技术是什么

大数据的核心层&#xff1a;数据采集层、数据存储与分析层、数据共享层、数据应用层&#xff0c;可能叫法有所不同本质上的角色都大同小异。 大数据的核心技术都包括什么&#xff1f; 1、数据采集 数据采集的任务就是把数据从各种数据源中采集和存储到数据存储上&#xff0c…...

「TCG 规范解读」初识 TPM 2.0 库续一

可信计算组织&#xff08;Ttrusted Computing Group,TCG&#xff09;是一个非盈利的工业标准组织&#xff0c;它的宗旨是加强在相异计算机平台上的计算环境的安全性。TCG于2003年春成立&#xff0c;并采纳了由可信计算平台联盟&#xff08;the Trusted Computing Platform Alli…...

task与function

task和function主要是有助于代码的可重用性&#xff0c;都可以在module-endmodule之外声明。 1.function 1.1.function逻辑的综合 function&#xff1a;一个只有1个wire型输出值、全是组合逻辑的函数&#xff0c;且函数名即输出信号名&#xff0c;小括号中按顺序例化输入信号。…...

Android 基础知识4-3.1 TextView(文本框)详解

一、前言 TextView就是一个显示文本标签的控件&#xff0c;就是用来显示文本。可以在代码或者 XML中设置字体&#xff0c;字体大小&#xff0c;字体颜色 &#xff0c;字体样式 &#xff08;加粗级斜体&#xff09;&#xff0c;文字截断&#xff08;比如&#xff1a;只显示10个字…...

点击化学 PEG 试剂1858242-47-3,Propargyl丙炔基-PEG1-乙酸活性酯

Propargyl-PEG1-Acetic acid-NHS ester&#xff0c;丙炔基-聚乙二醇-乙酸琥珀酰亚胺酯&#xff0c;丙炔基-PEG1-乙酸活性酯&#xff0c;丙炔基-PEG1-乙酸-NHS 酯产品规格&#xff1a;1.CAS号&#xff1a;1858242-47-32.分子式&#xff1a;C9H9NO53.分子量&#xff1a;211.174.包…...

正则表达式是如何运作的?

在日常的开发工作当中&#xff0c;我们必不可免的会碰到需要使用正则的情况。 正则在很多时候通过不同的组合方式最后都可以达到既定的目标结果。比如我们有一个需要匹配的字符串&#xff1a; hello&#xff0c;我们可以通过 / .</p>/ 以及 / .?</p>/ 来匹配&…...

基于PIC32的嵌入式MIDI合成器:从波表合成到硬件实现

1. 项目概述&#xff1a;一个基于嵌入式微控制器的MIDI声音合成器如果你对电子音乐制作、嵌入式开发&#xff0c;或者DIY硬件合成器感兴趣&#xff0c;那么“REMI Synth”这个项目绝对值得你花时间深入了解。它本质上是一个数字单音MIDI控制的声音合成器&#xff0c;核心是一块…...

保姆级教程:在Ubuntu上配置Frida环境,搞定Android App的IO重定向与签名绕过

在Ubuntu上构建Android逆向工程环境&#xff1a;Frida实战与IO重定向技术解析 对于习惯Linux环境的安全研究人员而言&#xff0c;Windows-centric的逆向工具链往往带来诸多不便。本文将系统性地介绍如何在Ubuntu上搭建完整的Android逆向环境&#xff0c;并深入探讨如何利用Frid…...

Unity3D深度纹理实战:手把手教你实现可交互的激光雷达扫描特效(附完整C#/Shader代码)

Unity3D深度纹理实战&#xff1a;手把手教你实现可交互的激光雷达扫描特效&#xff08;附完整C#/Shader代码&#xff09;在科幻题材的游戏开发中&#xff0c;激光雷达扫描特效是营造科技感的经典元素。从《赛博朋克2077》的战术目镜到《看门狗》的环境扫描&#xff0c;这种动态…...

不止于绘图:用GMT 6.4的`grdtrack`和`project`命令玩转地形剖面分析与可视化

不止于绘图&#xff1a;用GMT 6.4的grdtrack和project命令玩转地形剖面分析与可视化 当我们谈论地理空间分析时&#xff0c;很多人首先想到的是绘制精美的地图。但GMT&#xff08;Generic Mapping Tools&#xff09;的真正魅力在于它强大的地理计算能力。本文将带你超越基础绘图…...

别再盲调temperature=0.2!DeepSeek补全效果突变的4个隐藏参数,资深架构师压箱底调参清单

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;别再盲调temperature0.2&#xff01;DeepSeek补全效果突变的4个隐藏参数&#xff0c;资深架构师压箱底调参清单 DeepSeek-R1/VL 等开源大模型在实际部署中&#xff0c;仅靠调节 temperature 往往收效甚…...

基于Arduino UNO的真随机数生成与数据持久化在Tambola游戏机中的应用

1. 项目概述&#xff1a;用Arduino UNO打造一台全自动Tambola游戏机如果你玩过或者听说过Tambola&#xff08;在印度非常流行的游戏&#xff0c;在欧美也叫Bingo或Housie&#xff09;&#xff0c;就知道它的核心玩法是主持人从一个装有数字球的容器中随机抽取号码&#xff0c;玩…...

解决claude code频繁封号与token不足的taotoken接入方案

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 解决Claude Code频繁封号与Token不足的Taotoken接入方案 1. 问题背景&#xff1a;Claude Code用户面临的挑战 对于依赖Claude Cod…...

告别RaiDrive广告!用开源rclone+Alist,免费把阿里云盘/百度网盘变成电脑本地硬盘

开源方案实战&#xff1a;用rcloneAlist打造无广告的云盘本地化体验 每次打开RaiDrive时弹出的广告窗口是否让您感到困扰&#xff1f;商业软件的收费模式是否让您犹豫不决&#xff1f;今天&#xff0c;我们将彻底解决这些问题。通过开源工具Alist和rclone的组合&#xff0c;您不…...

当卫星在天上“读懂”人间:ICLR 2025 论文深度解读师玉娇、昃向辉的CS2S

把一张卫星图变成一张街景照片&#xff0c;就像把一个俯视棋盘拼成一面看台——不仅要摆对每一枚棋子&#xff0c;还要看懂整场比赛想象这样一个场景&#xff1a;你在城市规划部门工作&#xff0c;需要快速生成某条街道在不同季节、不同天气条件下的真实渲染效果&#xff0c;以…...

AVR+ESP8266双核架构打造独立WiFi天气显示器:从硬件设计到软件实现

1. 项目概述&#xff1a;一个独立WiFi天气显示器的诞生几年前&#xff0c;我琢磨着在书桌上放一个能实时显示天气信息的小玩意儿&#xff0c;市面上成品要么功能单一&#xff0c;要么价格不菲&#xff0c;要么数据源依赖复杂的服务器。于是&#xff0c;我决定自己动手&#xff…...