1.分布式-理论

目录

一、什么是分布式系统

二、CAP理论

1.一致性Consisency

2.可用性(Availability)

3.分区容错性(Partition tolrance)

三、BASE理论

1.Basically Available(基本可用)

2.Soft state(软状态)

3.Eventually consistent(最终一致性)

四、什么是分布式事务

1.本地事务ACID

2.分布式事务

五、分布式事务解决方案

1.二阶段提交2PC

2.三阶段提交3PC

3.TCC(Try-Confirm-Cancel)

4.Saga

5.基于消息的最终一致性:

6.最大努力通知

7.事务补偿机制


一、什么是分布式系统

一个系统各组件分别部署在不同服务器,彼此通过网络通信和协调的系统。

  • 可以指多个不同组件分布在网络上互相协作,比如说电商网站
  • 也可以一个组件的多个副本组成集群,互相协作如同一个组件,比如数据存储服务中为了数据不丢失而采取的多个服务备份冗余,当数据修改时也需要通信来复制数据

分布式最早出现的目地首先是解决单点问题,避免单点故障,然后解决了性能问题。

二、CAP理论

CAP理论说的是在一个分布式计算机系统中,一致性,可用性和分区容错性这三种保证无法同时得到满足,最多满足两个。

1.一致性Consisency

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

2.可用性(Availability)

可用性指"Reads and writes always succeed",即服务一直可用,而且是正常响应时间。

对于可用性的衡量标准如下:

3.分区容错性(Partition tolrance)

分区容错性指"the system continues to operate despite arbitrary message l
ss or failure of part of the system",即分布式系统在遇到某节点或网络分区故障的
时候,仍然能够对外提供服务。分区容忍性分是布式系统具备的基本能力。

三、BASE理论

BASE(Basically Available、Soft state、Eventual consistency)是基于CAP理论逐步演化而来的,核心思想是即便不能达到强一致性(Strong consistency),也可以根据应用特点采用适当的方式来达到最终一致性(Eventual consistency)的效果。

两个对冲理念:ACID和BASE

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

1.Basically Available(基本可用)

基本可用本质是一种妥协,也就是出现节点故障或者系统过载时,通过牺牲非核心
功能的可用性,保障核心功能的稳定运行。

实现基本可用的几个策略:

  1. 流量削峰
  2. 延迟响应,异步处理
  3. 体验降级
  4. 过载保护熔断/限流
  5. 故障隔离

2.Soft state(软状态)

弱状态允许系统中的数据存在中间状态,并认为该状态不影响系统的整体可用性,即允许系统在多个不同节点的数据副本存在数据延迟。

原子性是硬状态,要求多个节点的数据副本都是一致的。

3.Eventually consistent(最终一致性)

分布式系统不能一直是软状态,必须有个时间期限。在期限过后,应当保证所有副本保持数据
一致性。从而达到数据的最终一致性。这个时间期限取决于网络延时,系统负载,数据复制
方案设计等等因素。

四、什么是分布式事务

分布式事务是相对本地事务而言的,对于本地事务,利用数据库本身的事务机制,
就可以保证事务的ACID特性

1.本地事务ACID

ATOMICITY

原子性:一个事务中所有操作必须全部完成,要么全部不完成;

CONSISTENCY

一致性:在事务开始或结束时,数据库应该在一致状态;

ISOATION

隔离性:事务与事务之间不会互相影响,一个事务的中间状态不会被其他事务感知;

DURABILITY

持久性:一旦事务完成,就不能返回,事务对数据所做的变更完全保存在数据库中;

2.分布式事务

在分布式环境下,会涉及到多个数据库。分布式事务其实就是将对一个库事务的概念
扩大到了对多个库的事务。目的是为了保证分布式系统中的数据一致性。

分布式事务处理的关键是:

  1. 需要记录事务在任何节点所做的所有动作;
  2. 事务进行的所有操作要么全部提交,要么全部回滚;

五、分布式事务解决方案

1.二阶段提交2PC

这是最传统的分布式事务协议。它分为两个阶段:准备阶段和提交阶段。在准备阶段,事务协调者询问所有参与节点是否准备好提交事务;如果所有节点都回复“准备好”,则进入提交阶段,协调者命令所有节点提交事务;如果有任何节点无法准备,协调者命令所有节点回滚。

2PC缺点:

1.性能阻塞问题

执行过程中,所有参与节点都是事务阻塞性的,当参与者占有公共资源时,其他第三方节点访问公共资源就不得不处于阻塞状态,为了数据的一致性而牺牲了可用性,对性能影响较大,不适合高并发高性能场景

2.可靠性问题

2PC非常依赖协调者,当协调者发生故障时,尤其是第二阶段,那么所有的参与者就会都处于锁定事务资源的状态中,而无法继续完成事务操作(如果是协调者挂掉,可以重新选举一个协调者,但是无法解决因为协调者宕机导致的参与者处于阻塞状态的问题)

3.数据一致性问题

在阶段二中,当协调者向参与者发送commit请求之后,发生了局部网络异常或者在发送commit请求过程中协调者发生了故障,这回导致只有一部分参与者接受到了commit请求。而在这部分参与者接到commit请求之后就会执行commit操作。但是其他部分未接到commit请求的机器则无法执行事务提交。于是整个分布式系统便出现了数据不一致性的现象。

4.二阶段无法解决的问题

协调者在发出 commit 消息之后宕机,而唯一接收到这条消息的参与者同时也宕机了,那么即使协调者通过选举协议产生了新的协调者,这条事务的状态也是不确定的,没人知道事务是否被已经提交。

2.三阶段提交3PC

3PC,三阶段提交协议,是二阶段提交协议的改进版本。三阶段提交有两个改动点:

  1. 在协调者和参与者中都引入超时机制
  2. 为了解决2PC中协调者单点故障的问题,3PC引入了预提交阶段

所以3PC分为3个阶段:CanCommit 准备阶段、PreCommit 预提交阶段、DoCommit 提交阶段

3PC缺点

与2PC相比,3PC降低了阻塞范围,并且在等待超时后,协调者和参与者会中断事务,避免了协调者单点问题,阶段三中协调者出现问题时,参与者会继续提交事务。但数据不一致问题依然存在,当在参与者收到 preCommit 请求后等待 doCommit 指令时,此时如果协调者请求中断事务,而协调者因为网络问题无法与参与者正常通信,会导致参与者继续提交事务,造成数据不一致。

2PC和3PC都无法保证数据绝对的一致性,一般为了预防这种问题,可以添加一个报警,比如监控到事务异常的时候,通过脚本自动补偿差异的信息。

3.TCC(Try-Confirm-Cancel)

TCC模型将事务操作分为三个阶段:Try(预留资源)、Confirm(确认提交)和Cancel(取消释放)。在Try阶段,每个参与者尝试预留资源但不实际提交,如果所有参与者都能预留成功,则在Confirm阶段真正提交事务;否则,在Cancel阶段撤销之前的操作。

4.Saga

Saga通过一系列的短事务(也称为子事务)来模拟长事务,每个子事务都是可补偿的。如果某个子事务失败,Saga会执行之前所有子事务的补偿操作,从而达到事务的最终一致状态。

5.基于消息的最终一致性:

在这种模式下,服务之间通过消息队列异步通信,利用消息的发送与确认机制保证最终一致性。通常包括发布/订阅模型和事件驱动架构,如 Saga 也可以通过这种方式实现。

6.最大努力通知

最大努力通知也称为定期校对,是对MQ事务方案的进一步优化。它在事务主动方增加了消息校对的接口,如果事务被动方没有接收到主动方发送的消息,此时可以调用事务主动方提供的消息校对的接口主动获取。

最大努力通知,事务主动方尽最大努力(重试,轮询....)将事务发送给事务接收。被动方也可调用接口校对并消费。

7.事务补偿机制

通过业务层面的设计实现事务的补偿逻辑,允许服务在失败后通过反向操作恢复到一致状态,适用于对实时性要求不高的场景。

 

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

交流回馈电网测试电源的技术突破

交流回馈电网测试电源:电力系统中的关键组件的深度解析析 交流回馈电网测试电源作为电力系统的关键组成部分,其重要性和作用不容忽视。交流回馈电网测试电源是一种电力测试设备,主要用于模拟真实电网环境,对电力电子设备进行长时间…

LoRaWAN入门

1.文档资料 飞书云文档 (feishu.cn) G43室内LoRaWAN网关 - doc.alinkwise.com > LoRaWAN网关(基站) > G4x > G43室内LoRaWAN网关 2.简介 LoRa: 远距离无线电(long rang radio), 它最大特点就是在同样的功耗条件下比其他无线方式…

问题与解决:大华视频后台播放报错

大华播放器接到BI系统后,实时监控视频后台播放一段时间后,报错如下: The play() request was interrupted because video-only background media was paused to save power. 在谷歌浏览器下,直接用代码运行系统,视频在…

逻辑门:OR、AND、XOR、NOR、NAND、XNOR 和 NOT

AND Gate in Python 如果两个输入均为 1,则 AND 门给出输出 1,否则给出 0。 def AND (a, b):if a 1 and b 1:return Trueelse:return FalseNAND Gate in Python 如果两个输入均为 1,则 NAND gate (negated AND)给出 0 的输出&#xff0…

万能门店小程序开发平台功能源码系统 带完整的安装代码包以及安装搭建教程

互联网技术的迅猛发展和用户对于便捷性需求的不断提高,小程序以其轻量、快捷、无需安装的特点,成为了众多商家和开发者关注的焦点。为满足广大商家对于门店线上化、智能化管理的需求,小编给大家分享一款“万能门店小程序开发平台功能源码系统…

【敦煌网注册/登录安全分析报告】

敦煌网注册/登录安全分析报告 前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大…

斯坦福李飞飞最新对话:AI不会对人类造成“灭绝性危机” | 最新快讯

美国斯坦福大学教授、美国国家工程院院士李飞飞(来源:斯坦福大学账号) 北京时间 5 月 10 日凌晨举行的 Bloomberg Tech 活动上,著名华人计算机科学家、美国斯坦福大学教授李飞飞(Fei-Fei Li)与彭博社 Emily…

中霖教育:考消防工程师有专业限制吗?

想要参加消防工程师考试,有专业限制吗? 其实是没有的,无论是否为消防工程专业都可以报名参加考试,只不过非专业人员的工作年限和从事相关工作的年限会要求多一年。 限制条件: 报考消防工程师主要有学历、工作年限、消防安全技…

Linux:进程概念(三.详解进程:进程状态、优先级、进程切换与调度)

上次讲了进程这些内容:Linux:进程概念(二.查看进程、父进程与子进程、进程状态详解) 文章目录 1.Linux中的进程状态1.1前台进程和后台进程运行状态睡眠状态磁盘休眠状态停止状态kill指令—向进程发送信号 死亡状态 2.僵尸进程2.1僵…

.[sqlback@memeware.net].2700勒索病毒如何防护和恢复数据?

.[sqlbackmemeware.net].2700介绍: .[sqlbackmemeware.net].2700 勒索病毒是一种恶意软件,它通过加密用户文件并索要赎金来实施勒索,快速恢复重要数据请添加技术服务号(safe130)。以下是关于这种勒索病毒的一些关键信息: 病毒性质…

1016: 插入排序算法实现

解法&#xff1a; /* 插入排序 */ void insertionSort(vector<int>& nums) {// 外循环&#xff1a;已排序区间为 [0, i-1]for (int i 1; i < nums.size(); i) {int base nums[i], j i - 1;// 内循环&#xff1a;将 base 插入到已排序区间 [0, i-1] 中的正确位置…

【八】centos7.6安装chrome和chromedriver并启动selenium

学习来源&#xff1a; 安装chrome和chrome driver -----https://blog.csdn.net/zdlcome/article/details/133813441 安装Python11 -----https://blog.csdn.net/weixin_43741408/article/details/130251102 chromedriver下载地址 -----https://googlechromelabs.github.io/chrom…

哪些软件格式在win跟linux上都能运行?

在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「linux的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01; 有一些软件格式在Windows和Li…

Git 分支命令操作详解

目录 1、分支的特点 2、分支常用操作 3、分支的使用 3.1、查看分支 3.2、创建分支 3.3、修改分支 3.4、切换分支 3.5、合并分支 3.6、产生冲突 3.7、解决冲突 3.8、创建分支和切换分支说明 1、分支的特点 同时并行推进多个功能开发&#xff0c;提高开发效率。各个分…

一、Prometheus介绍及部署

目录 一、什么是Prometheus&#xff1f; 二、特点 三、prometheus 的生态组件&#xff1a; 四、Prometheus架构图 五、prometheus 的工作模式 六、Prometheus 的工作流程 七、部署Prometheus 1、prometheus配置文件介绍 2、配置文件详解 3、配置systemd服务 用systemct…

十天学会单片机可能吗?单片机入门需要多久?

在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「单片机的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01; 十天学“会”单片机&#xf…

【Vue3进阶】- Pinia

什么是Pinia Pinia 是 Vue 的专属状态管理库&#xff0c;它允许你跨组件或页面共享状态。它提供了类似于 Vuex 的功能&#xff0c;但比 Vuex 更加简单和直观。 需要在多个组件之间共享状态或数据时使用 Pinia 的 store&#xff0c;这样可以避免 props 和 eventBus 等传统方法…

计算机毕业设计 | vue+springboot线上考试 在线测试系统(附源码)

1&#xff0c;项目介绍 项目背景 在线考试借助于网络来进行&#xff0c;传统考试所必备的考场和监考对于在线考试来说并不是必要项目&#xff0c;因此可以有效减少组织考试做需要的成本以及设施。同时&#xff0c;由于在线考试系统本身具有智能阅卷的功能&#xff0c;也大大减…

不容错过的秘籍:JavaScript数组的创建和使用详解

在编程的世界里&#xff0c;数据是构建一切的基础。而在JavaScript中&#xff0c;有一种特殊且强大的数据结构&#xff0c;它就是——数组。 今天&#xff0c;我们就来一起探索数组的奥秘&#xff0c;从创建到使用&#xff0c;一步步掌握这个重要的工具。 一、什么是数组 数…

AI原生实践:测试用例创作探索

测试用例作为质量保障的核心&#xff0c;影响着研发-测试-发布-上线的全过程&#xff0c;如单元测试用例、手工测试用例、接口自动化用例、UI 自动化用例等&#xff0c;但用例撰写的高成本尤其是自动化用例&#xff0c;导致了用例的可持续积累、更新和迭代受到非常大制约。长久…