分布式事务-基本信息

文章目录

  • 前言
    • 分布式事务-基本信息
      • 1. 两阶段提交(2PC)
      • 2. 三阶段提交(3PC)
      • 3. TCC模式
      • 4. 可靠消息最终一致性
      • 5. 优缺点与应用场景
        • 5.1. 两阶段提交(2PC)
        • 5.2. 三阶段提交(3PC)
        • 5.3. TCC模式
        • 5.4. 可靠消息最终一致性
      • 6. 总结

前言

  如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。
  而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!!


分布式事务-基本信息

分布式事务是指在分布式系统中,多个独立的数据库或系统参与同一个事务,以确保数据的一致性和完整性。

1. 两阶段提交(2PC)

2PC由协调者控制,分为两个阶段:

  • 准备阶段:协调者向所有参与者发送准备请求,参与者执行事务操作但不提交。

  • 提交阶段:协调者根据所有参与者的反馈决定提交还是回滚事务。

2PC的特点是简单直接,但存在单点故障和阻塞问题。

2. 三阶段提交(3PC)

3PC在2PC的基础上增加了一个准备确认阶段,减少阻塞:

  • 准备阶段:协调者询问参与者是否可以提交事务。

  • 预提交阶段:所有参与者都同意后,协调者发送预提交请求,参与者预提交事务。

  • 提交阶段:协调者通知参与者提交事务。

3PC通过增加阶段减少了协调者和参与者的阻塞风险,但实现复杂度更高。

3. TCC模式

TCC(Try-Confirm/Cancel)模式的三阶段与2PC和3PC有所区别:

  • Try阶段:尝试执行业务操作并预留资源,不做实际提交。

  • Confirm阶段:确认提交,如果Try阶段成功,实际执行业务操作。

  • Cancel阶段:取消操作,如果Try阶段失败或业务异常,回滚预留资源。

TCC模式主要用于应用层的事务控制,由应用逻辑负责实现每个阶段的操作。它相比2PC和3PC,更灵活但也更复杂,因为需要开发者自己实现Try、Confirm和Cancel逻辑。

4. 可靠消息最终一致性

可靠消息最终一致性可靠消息最终一致性通过消息中间件来确保事务的一致性,其过程如下:

  • 本地事务和消息发送:发送方在本地事务中发送消息到消息中间件,并标记为待确认。

  • 消息确认:消息中间件保证消息可靠传递给接收方,接收方处理后反馈确认。

  • 定期检查和重试:消息中间件会对未确认的消息进行重试,直到收到接收方确认,确保最终一致性。

这种模式不属于2PC和3PC,而是通过异步消息和重试机制来实现一致性,适用于对一致性要求不高但对性能要求较高的场景。

5. 优缺点与应用场景

5.1. 两阶段提交(2PC)

优点:

  • 简单易实现:协议简单,参与者只需遵守协调者的指令。
  • 保证一致性:能够确保所有参与者在事务完成后达到一致状态。

缺点:

  • 阻塞问题:如果协调者在提交阶段崩溃,参与者会被阻塞在准备状态,直到协调者恢复。

  • 单点故障:协调者是单点,如果它故障,整个事务系统无法运行。

  • 性能开销:在提交过程中,所有参与者都需要等待协调者的指令,性能较低。

应用场景:

  • 金融交易系统:需要确保所有相关账户的状态一致,适用于对强一致性要求高的场景。

  • 分布式数据库:需要确保多个数据库实例之间的数据一致性。

5.2. 三阶段提交(3PC)

优点:

  • 减少阻塞:通过增加准备确认阶段,减少参与者等待的时间,减少阻塞风险。

  • 更高的容错性:相比2PC,更能应对协调者的故障。

缺点:

  • 复杂性增加:引入了额外的阶段和消息通信,协议实现更加复杂。

  • 性能开销:和2PC一样,仍然有较高的性能开销,增加的阶段也会增加延迟

应用场景:

  • 分布式数据库:在需要进一步降低阻塞风险的分布式数据库系统中使用。

  • 关键性金融交易:需要在高一致性和高可用性之间取得平衡的场景。

5.3. TCC模式

优点:

  • 高灵活性:开发者可以根据具体业务场景定制Try、Confirm和Cancel逻辑,灵活性高。

  • 高性能:相比2PC和3PC,不需要等待协调者的指令,性能更好。

  • 解耦业务逻辑:将资源预留、提交和取消分开,有助于业务逻辑的解耦。

缺点:

  • 开发复杂度高:需要开发者自己实现每个阶段的逻辑,增加开发复杂度。

  • 资源预留挑战:需要考虑资源预留的有效性和安全性,避免资源浪费和竞争问题。

应用场景:

  • 电子商务:订单创建、库存扣减和支付等操作需要跨多个系统,适合使用TCC模式。

  • 金融业务:需要确保多步骤操作的一致性和灵活性,如贷款审批和放款。

5.4. 可靠消息最终一致性

优点:

  • 异步处理:消息传递和事务处理异步进行,性能较高。

  • 高可用性:消息中间件提供重试和确认机制,能够确保消息最终被处理,系统更加健壮。

  • 适用广泛:适用于对强一致性要求不高但需要高性能的场景。

缺点:

  • 最终一致性:只能保证最终一致性,不能保证瞬时一致性,可能会有短暂的不一致状态。

  • 消息中间件依赖:依赖可靠的消息中间件,需要对消息系统进行监控和管理。

  • 复杂性增加:涉及到消息的发送、接收、确认和重试逻辑,增加了系统复杂性。

应用场景:

  • 微服务架构:在微服务间通过消息队列进行通信,适用于订单处理、用户注册等操作。

  • 大数据处理:异步处理大量数据,确保最终一致性,如日志收集和分析系统。

6. 总结

特性二阶段提交三阶段提交TCC模式可靠消息最终一致性
一致性强一致性强一致性强一致性最终一致性
复杂性中等
性能中等
阻塞问题减少
单点故障
适用场景强一致性要求高强一致性要求高且容错性要求高复杂业务逻辑性能要求高,最终一致性场景

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

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

相关文章

*算法训练(leetcode)第三十一天 | 1049. 最后一块石头的重量 II、494. 目标和、474. 一和零

刷题记录 *1049. 最后一块石头的重量 II*494. 目标和474. 一和零 *1049. 最后一块石头的重量 II leetcode题目地址 本题与分割等和子集类似,要达到碰撞最后的石头重量最小,则尽可能把石头等分为两堆。 时间复杂度: O ( m ∗ n ) O(m * n)…

【ffmpeg命令入门】视频的旋转与翻转

文章目录 前言什么时候需要使用旋转与翻转1. 视频拍摄方向不正确2. 视频编辑特效使用什么参数1. 旋转视频 - transpose2. 水平翻转视频 - hflip3. 垂直翻转视频 - vflip 总结 前言 在视频编辑的过程中,我们经常会遇到需要旋转或翻转视频的情况。无论是因为拍摄时相…

如何在Ubuntu20.04上安装adb和fastboot

如何在Ubuntu20.04上安装adb和fastboot 步骤1.首先,通过apt在终端中运行以下以下命令,确保所有系统软件包都是最新的。 sudo apt update sudo apt upgrade 步骤2.在Ubuntu 20.04上安装ADB和Fastboot。 运行以下命令以在Ubuntu系统上安装ADB Fastboot二进…

linux怎么创建python

第一步,创建一个test文件夹。 第二步,打开终端进入该文件。 第三步,vim test.py。 第四步,编写代码。 第五步,编辑好之后,按Esc键切换到命令模式,然后输入:wq,再按回车键即可自动保存…

探索 SPL-404 协议标准:NFT 与 DeFi 的融合

在快速发展的数字资产领域中,NFT 协议标准持续演变,改变了我们对数字所有权和互动方式的理解。从 Art 到 Gamefi 等等,NFT 已经演变成数字经济的重要组成部分,吸引了广泛关注。遵循 ERC404 协议,SPL404 概念在 Solana …

动态预测的艺术:Mojo模型与实时调整的融合

动态预测的艺术:Mojo模型与实时调整的融合 在机器学习领域,模型的推理速度和准确性往往需要在实际应用中不断调整以达到最优状态。Mojo模型,作为ONNX(Open Neural Network Exchange)的一部分,提供了一种高…

AvaloniaUI的学习

相关网站 github:https://github.com/AvaloniaUI/Avalonia 官方中文文档:https://docs.avaloniaui.net/zh-Hans/docs/welcome IDE选择 VS2022VSCodeRider 以上三种我都尝试过,体验Rider最好。VS2022的提示功能不好,VSCode太慢&#xff0c…

flex/lex使用和学习

flex/lex用于生成解析配置文件的C代码,我们可以不用自己手动去做解析的工作,交由他们生成的代码去做。 假设,我有如下一个配置文件config.xml 配置文件中定义了三种channel,分别为SSIF, IPMB, NET,每一种channel都有4个int属性&a…

leetcode 461.汉明距离

1.题目要求: 两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。给你两个整数 x 和 y,计算并返回它们之间的汉明距离。示例 1:输入:x 1, y 4 输出:2 解释: 1 (0 0 0 1) 4 (0 1 0 0)↑ …

生成式AI:对话系统(Chat)与自主代理(Agent)的和谐共舞

生成式AI:对话与行动的和谐共舞 我们正站在一个令人激动的时代门槛上——生成式AI技术飞速发展,带来了无限的可能性。一个关键问题浮现:AI的未来是对话系统(Chat)的天下,还是自主代理(Agent&am…

实时同步:使用 Canal 和 Kafka 解决 MySQL 与缓存的数据一致性问题

目录 1. 准备工作 2. 将需要缓存的数据存储 Redis 3. 监听 canal 存储在 Kafka Topic 中数据 1. 准备工作 1. 开启并配置MySQL的 BinLog(MySQL 8.0 默认开启) 修改配置:C:\ProgramData\MySQL\MySQL Server 8.0\my.ini log-bin"HELO…

【Git】merge合并分支

两个分支未修改同一个文件的同一处位置: Git自动合并 两个分支修改了同一个文件的同一处位置:产生冲突 例: 在master分支修改了main同时,feat分支也修改了相同的文件 合并的时候就会产生冲突 解决方法: Step1- 手工修改冲突文件,合并冲突内容…

立仪光谱共焦传感器应用测量之:汽车连接器高度差测量

01 检测要求,要求测量汽车连接器的高度差 02 检测方式 根据观察,我们采用立仪科技光谱共焦H4UC控制器搭配D65A52系列镜头,角度最大,外径最大,量程大,可以有效应用于测量弧面,大角度面等零件。 0…

会员信息管理系统-计算机毕业设计源码38258

目 录 摘要 1 绪论 1.1 研究背景 1.2 研究意义 1.3开发技术 1.3.1 Spring Boot框架 1.3.2 Java语言 1.3.3 MySQL数据库 1.4论文结构与章节安排 2系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 登录流程 2.2.2数据删除流程 2.3 系统功能分析 2.4 系统用例分析…

视频去水印免费电脑版 pdf压缩在线免费网页版 pdf压缩在线免费 简单工具软件详细方法步骤分享

消除视频中的恼人水印,是许多视频编辑爱好者的常见需求。在这篇文章中,我们将探讨几种视频去水印的技巧,在数字化时代,视频和图片的传播越来越方便,但随之而来的水印问题也让人头疼。本文将为您详细介绍视频剪辑去水印…

Web开发:ASP.NET CORE中前端使用Ajax定时获取后端数据

一、低难度(刷新a标签) 1、需求 给a标签每15s刷新一次,显示最新的时间(时间必须由后端获取) 应该如何操作呢 2、代码 后端 using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using Mi…

医疗器械维修行业发展及趋势

医疗器械维修的前景是广阔的。‌ 随着医疗技术的不断发展和进步,‌医疗器械的种类和数量持续增加,‌对专业维修人员的需求也在不断上升。‌无论是医院、‌诊所等医疗机构,‌还是医疗器械生产企业、‌销售企业等,‌都需要专业的维修…

System.identityHashCode(Object obj) 和 obj.hashCode() 的区别

System.identityHashCode(Object obj) 和 obj.hashCode() 都用于获取对象的哈希码,但它们有显著的区别: System.identityHashCode(Object obj): 返回对象的默认哈希码,这个哈希码是基于对象的内存地址生成的,而不受对象的 hashC…

快速入门了解Ajax

博客主页:音符犹如代码系列专栏:JavaWeb关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Ajax的初识 意义:AJAX(Asynchronous JavaScript and…

深入理解二叉搜索树:定义、操作及平衡二叉树

引言 二叉搜索树(Binary Search Tree,BST)是一种特殊的二叉树结构,每个节点的左子树节点值小于根节点值,而右子树节点值大于根节点值。二叉搜索树在计算机科学中有着广泛的应用,尤其在动态查找表和优先队列…