【分布式系统】聊聊分布式事务中原子性

什么是分布式事务

在分布式系统中,一个是计算问题,也就是将多个任务,通过流控技术把不同的流量分发给不同的服务器进行处理。另一个就是存储,而只要设计的存储,就必然会引入从单体事务中衍生除的分布式事务问题。
事务的本质是什么,其实就是处理数据的复杂度 转移到数据库层面,业务开发人员无序关注具体的细节,简化开发。

分布式事务有两种方式,一种是数据需要复制到多个副本中,而这种一般都通过单主复制来解决。另一种就是在不同的节点操作不同的数据,比如订单系统N1节点,支付系统N2节点。如何在出现异常情况下进行事务的回滚解决。或者一起成功提交。

从ACID中看分布式事务

在这里插入图片描述

一致性与持久性

ACID这里就不说了,在分布式系统中,和单体的一致性和持久性没有太大区别。为了实现一致性,通过前后进行写入日志进行提交和回滚。而持久性,一般都是在返回响应到客户端的时候,进行将数据持久化到非易失性存储设备中,或者使用WAL 先写入日志,后刷新回磁盘的方式。而这种机制其实对于Redis、Kafka都具备。

原子性

二阶段提交

两阶段提交,其实就是为了防止,在一次提交后,有部分节点出现故障而导致数据不一致的问题。
二阶段提交中有两个角色 一个是协调者,另一个是参与者。协调者负责进行决策。而参与者是具体的节点。
第一个阶段:准备阶段,协调者发送请求参与者,参与者是否准备好所需的事务资源准备等。如果准备好,响应。 如果有一个参与者没有响应,那么事务中断。都响应之后,在继续进入下一个阶段。注意这个阶段会执行事务操作。
第二个阶段 提交阶段,因为在准备阶段协调者,接收到所有参与者的准备响应。所以进行提交。如果有一个参与者没有提交成功,则直接回滚整个事务。否则事务提交成功。
在这里插入图片描述
其实整个过程就是 一个准备 一个提交阶段。但是对于二阶段提交来说,还是存在很多问题。
比如在准备阶段,可能有一个参与者超时不能响应,这种就需要设置容错机制来解决。超时等待时间。协调者如果是单机可能出现单点故障。以及在提交阶段,如果只有部分完成, 出现网络分区,脑裂问题,会导致数据不一致问题。所以综上所诉,二阶段还是存在一定的问题。所以需要三阶段提交来解决。

三阶段提交

在这里插入图片描述
三阶段其实就是三个过程。准备 预提交 提交
为了防止二阶段协调者故障问题,增加一个预提交的过程。
第一阶段,协调者向所有参与者发送资源是否准备好的请求,如果都返回成功,继续
第二阶段,协调者向所有参与者预提交,参与者进行执行事务,并返回结果。
第三阶段,协调者向所有参与者提交,事务完成
如果在任意一个阶段,有参与者没有返回结果。那么就终止。
二阶段提交是阻塞协议,三阶段是非阻塞协议,增加了可用性。

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

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

相关文章

分布式应用:Zabbix自定义监控模板

目录 一、理论 1.zabbix监控模板 2.在客户端创建自定义 key 3.在 Web 页面创建自定义监控项模板 4.设置邮件报警 二、实验 1.在客户端创建自定义 key 2.在 Web 页面创建自定义监控项模板 3.设置邮件报警 三、问题 1.查看动作发送邮件失败 四、总结 一、理论 1.zab…

Day 74:通用BP神经网络 (1. 集中管理激活函数)

代码: package dl;/*** Activator.*/public class Activator {/*** Arc tan.*/public final char ARC_TAN a;/*** Elu.*/public final char ELU e;/*** Gelu.*/public final char GELU g;/*** Hard logistic.*/public final char HARD_LOGISTIC h;/*** Identit…

Seata - 入门笔记

1、事务 访问并可能更新数据库中数据库中各种数据线的一个程序执行单元 原子性:事务是一个不可分割的工作单位,一个事务要么都做要么都不做 一致性:必须是使数据库从一个一致性到另一个一致性的状态,中间状态不能被观察到 隔离…

WebRTC | 音视频实时通信的本质

目录 一、音视频实时通信的两种指标 1. 实时通信延迟指标 2. 视频相关的基本概念 3. 音视频服务质量指标 二、解决实时通信的主要矛盾 1. 增加带宽 A. 提供更优质的接入服务 B. 保证云端网络的带宽和质量 C. 更合理的路由调度策略 2. 减少数据量 A. 采用更好的压缩算…

Metasploitable2靶机漏洞复现

一、信息收集 nmap扫描靶机信息 二、弱口令 1.系统弱口令 在Kali Linux中使用telnet远程连接靶机 输入账号密码msfadmin即可登录 2.MySQL弱口令 使用mysql -h 靶机IP地址即可连接 3.PostgreSQL弱密码登录 输入psql -h 192.168.110.134 -U postgres 密码为postgres 输入\…

10. Docker Swarm(一)

目录 1、前言 2、Docker Swarm体系架构 2.1、简单介绍 2.2、体系架构 3、简单使用 3.1、环境准备 3.2、初始化master节点 3.3、建立worker节点 3.4、查看集群的节点信息 3.5、部署应用 3.5.1、创建Dockerfile文件 3.5.2、构建镜像 3.5.3、将镜像上传到Docker仓库 …

web前端之JS

文章目录 介绍一、JS引入到文件1.1 嵌入到HTML文件中1.2 引入本地独立JS文件1.3 引入网络来源文件 二、JS的注释三、JS输出方式四、JS数据类型4.1 判断数据类型 typeof4.2 charAt返回指定位置的字符4.3 concat连接两个字符串4.4 substring从原字符串提取字符串并返回4.4 substr…

Vue输入框或者选择框无效,或者有延迟

问题剖析 使用Vue这种成熟好用的框架,一般出现奇奇怪怪的问题都是因为操作不当导致的,例如没有合理调用组件、组件位置不正确、没有合理定义组件或者变量、样式使用不当等等... 解决方案 如果你也出现了输入框输入东西,但是没有效果…

(二)结构型模式:1、适配器模式(Adapter Pattern)(C++实现示例)

目录 1、适配器模式(Adapter Pattern)含义 2、适配器模式应用场景 3、适配器模式的UML图学习 4、C实现适配器模式的示例 1、适配器模式(Adapter Pattern)含义 将一个接口转换为客户端所期待的接口,从而使两个接口…

最强自动化测试框架Playwright(11)- 录制视频

视频 使用playwright,您可以录制测试视频。 录制视频 视频在测试结束时在浏览器上下文关闭时保存。如果手动创建浏览器上下文,请确保等待 browser_context.close()。 context browser.new_context(record_video_dir"vid…

互联网医院办理|沈阳互联网医院|医疗行业新机遇

互联网医院的办理不仅能为人们带来更便利、高效的医疗服务,更能缓解医疗资源紧张的问题,推动医疗服务的质量和效率提升。在这个充满信息化和科技变革的时代,互联网医院无疑是医疗行业向前迈进的重要一步。 1、提供全天候的医疗服务&#xff1…

重复delete 对象指针后的 异常调用栈怪异 解析

Release版VC6 MFC程序 程序正常退出时得到一个如下异常调用栈:​ 0:000> kb# ChildEBP RetAddr Args to Child WARNING: Frame IP not in any known module. Following frames may be wrong. 00 0019eb94 76124f2f 00c3afc8 0019ebdc 001…