局域网视频网站建设/指数基金什么意思

局域网视频网站建设,指数基金什么意思,沈阳做网站制作的公司,深圳外贸建站与推广文章目录 导图Pre流程图2PC VS 3PC VS TCC2PC(Two-Phase Commit,二阶段提交)3PC(Three-Phase Commit,三阶段提交)TCC(Try-Confirm-Cancel)2PC、3PC与TCC的区别2PC、3PC与TCC的联系 导…

文章目录

  • 导图
  • Pre
  • 流程图
  • 2PC VS 3PC VS TCC
    • 2PC(Two-Phase Commit,二阶段提交)
    • 3PC(Three-Phase Commit,三阶段提交)
    • TCC(Try-Confirm-Cancel)
    • 2PC、3PC与TCC的区别
    • 2PC、3PC与TCC的联系

在这里插入图片描述

导图

在这里插入图片描述


Pre

随着大流量、高并发业务场景的出现,对系统可用性的要求变得越来越高,这时 CAP 理论和 BASE 理论逐渐进入人们的视野,柔性事务成为分布式事务的主要实现方式,TCC 作为补偿事务也位列其中.

TCC(Try-Confirm-Cancel)的核心思想是对于每个资源的原子操作,应用程序都需要注册一个与此操作对应的确认操作和补偿(撤销)操作。其中确认操作负责在原子操作执行成功时进行事务提交,补偿操作负责在原子操作执行失败时对事务进行回滚。


流程图

客户端 服务B(尝试阶段) 服务C(确认/取消阶段) 发起分布式事务请求 尝试锁定资源(预处理) 返回尝试成功(资源已锁定) 发起确认请求 执行提交操作(确认) 返回确认成功 执行回滚操作(取消) 返回取消失败信息 alt [确认成功] [确认失败] 客户端 服务B(尝试阶段) 服务C(确认/取消阶段)
  1. Try阶段(资源锁定)

    • 客户端(A)发起请求,通知服务B进行事务操作。
    • 服务B执行Try操作,尝试锁定资源(例如扣款或占用库存)。此时,服务B的资源被锁定,但尚未提交任何操作。
    • 服务B返回给客户端A,表示资源已锁定,并准备进入下一阶段。
  2. Confirm阶段(提交)

    • 客户端(A)根据其他服务的响应,决定是否进入Confirm阶段。
    • 服务C接收到确认请求后,执行Confirm操作,将之前的预处理结果提交(如真正扣款、更新库存等)。
    • 如果操作成功,服务C返回确认成功给客户端A,表示事务提交完成。
  3. Cancel阶段(回滚)

    • 如果在Try阶段发现某些条件未达成(例如余额不足,库存不足等),或者在Confirm阶段发生错误,客户端或服务将请求进入Cancel阶段。
    • 服务C会执行Cancel操作,回滚之前的操作(如退还款项或恢复库存)。
    • 服务C返回取消失败信息,客户端A可以根据返回结果进行相应的补救措施。

2PC VS 3PC VS TCC

2PC(Two-Phase Commit,二阶段提交)

2PC协议是分布式事务中最基础的协议,分为两个阶段:

  1. 准备阶段(Voting Phase):协调者(通常是事务管理器)向所有参与者发送“准备提交”请求,要求参与者执行事务操作并保留结果,但不提交数据,参与者需要返回“准备好”或“无法提交”的响应。

  2. 提交阶段(Commit Phase):如果所有参与者都返回“准备好”,则协调者发送“提交”请求,所有参与者正式提交操作。如果任何一个参与者返回“无法提交”,则协调者发送“回滚”请求,所有参与者回滚操作。

优点

  • 实现简单,易于理解。

缺点

  • 阻塞问题:如果协调者崩溃,参与者会一直等待协调者的决策,造成系统阻塞。
  • 单点故障:协调者是单点,若协调者失败,事务无法完成。
  • 资源占用:参与者需要长时间持有锁,直到事务提交或回滚。

3PC(Three-Phase Commit,三阶段提交)

3PC是在2PC基础上改进而来的,目的是解决2PC中的阻塞问题。它增加了一个额外的阶段来进行更细粒度的事务状态控制。

  1. 询问阶段(CanCommit Phase):协调者询问所有参与者是否可以执行事务,并预备提交。参与者在此阶段进行必要的预处理。

  2. 预提交阶段(PreCommit Phase):所有参与者确认可以提交后,协调者要求所有参与者进行预提交操作。此时,参与者已经做好提交操作的准备,但还没有真正提交。

  3. 提交阶段(DoCommit Phase):协调者正式通知所有参与者提交操作,事务正式完成。

优点

  • 改进了2PC的阻塞问题,因为3PC在协调者崩溃后参与者不会一直等待,可以通过预提交阶段保证一致性。

缺点

  • 实现复杂。
  • 仍然存在一定的网络分区和故障恢复问题。

TCC(Try-Confirm-Cancel)

TCC是分布式事务处理中较为复杂的一种方案,通常在资源管理和高一致性要求的场景下使用。它将分布式事务拆解为三个阶段:Try、Confirm和Cancel。

  1. Try(尝试):在此阶段,参与者执行尝试操作,如锁定资源,并确保幂等性。Try阶段完成后,系统处于“预提交”状态,但未真正提交数据。

  2. Confirm(确认):在所有操作都顺利完成时,协调者通知各参与者提交事务。此时所有操作都是最终的提交。

  3. Cancel(取消):如果某些操作失败,或者出现异常,协调者会通知参与者回滚操作,恢复到事务前的状态。

优点

  • 高度可控,支持显式的回滚。
  • 支持幂等性操作,能更好地处理异常场景。

缺点

  • 需要在每个参与者上实现Try、Confirm和Cancel逻辑,复杂度较高。
  • 性能和资源消耗较大,因为每个参与者都需要进行锁定和操作恢复。

2PC、3PC与TCC的区别

特性2PC3PCTCC
阶段2个阶段:准备、提交3个阶段:询问、预提交、提交3个阶段:尝试、确认、取消
阻塞问题存在,协调者崩溃时参与者会一直阻塞解决了部分阻塞问题,但不完全消除无阻塞问题,失败时有明确的回滚操作
容错能力较差,协调者故障会导致整个事务失败相较2PC,容错能力提高,但仍有不足较强,支持回滚,适合高度容错和一致性要求的场景
资源占用参与者需要长时间持有锁,资源占用较大参与者需要长时间持有锁,资源占用较大各参与者在不同阶段持有锁,资源占用较大
复杂度简单实现,但功能受限实现较复杂,增加了容错机制实现较复杂,需要业务逻辑支持
适用场景一致性要求较低的小型分布式系统对容错性有一定要求的分布式事务系统高一致性、高可用性要求的复杂场景,尤其是金融、库存管理等

2PC、3PC与TCC的联系

  • 相似性:这三种协议都属于分布式事务协议,目的是保证分布式系统中多个参与者的一致性和数据的可靠性。它们都涉及到协调者与参与者之间的交互,以及如何确保事务的一致性和成功提交。

  • 演化关系:2PC是最早的分布式事务协议,虽然实现简单,但存在阻塞和单点故障的问题。为了避免这些问题,3PC在2PC的基础上增加了一个预提交阶段,进一步解决了阻塞问题。而TCC则通过引入Try、Confirm和Cancel三个阶段,提供了更灵活的事务控制,适合于更复杂的分布式事务场景。

  • 应用场景重叠:这三种协议在一些场景中可以互相替代,例如金融系统的支付操作等高一致性场景。但在不同的系统需求下,选择的协议会有所不同。TCC特别适合对事务回滚有要求且资源操作可幂等的场景。

在这里插入图片描述

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

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

相关文章

脑肿瘤检测数据集,对9900张原始图片进行YOLO,COCO,VOC格式的标注

脑肿瘤检测数据集,对9900张原始图片进行YOLO,COCO,VOC格式的标注 数据集分割 训练组 70% 6930图片 有效集 20% 1980图片 测试集 10% 990图片 预处理 静态裁剪: 24-82&…

步进电机接线和stm32引脚分配

实验设备 24v(12-48 v)直流电源 stm32f103最小系统板 步进电机驱动器 采用混合式二相步进电机J-5718HBS2401-野火42步进电机,驱动器为野火EBF-MSD4805 本人参考接线方式如下: 如上图所示通常采用共阴接线方式,具体…

极乐 15.2.6 | 清爽版简约美观音乐软件,支持网易云歌单导入

极乐是一款使用起来非常轻松的音乐播放软件,它拥有清新简洁的画面,专注于音乐播放功能。最新版本全面升级了64位架构,带来了前所未有的性能提升和更稳定的体验。通过优化内存管理,降低了应用对系统资源的占用,确保设备…

4、mysql高阶语句

mysql高阶语句是对复杂的条件进行查询的操作。 排序—order by 加了desc表示由大到小 1、查询name和score,地址都是云南西路的按id进行由小到大排序 2、查询name和score,先按hobbid进行排序,再把结果按id进行排序 第一段字段必须要有相同的…

Docker部署GitLab服务器

一、GitLab介绍 1.1 GitLab简介 GitLab 是一款基于 Git 的开源代码托管平台,集成了版本控制、代码审查、问题跟踪、持续集成与持续交付(CI/CD)等多种功能,旨在为团队提供一站式的项目管理解决方案。借助 GitLab,开发…

hadoop中hive本地模式安装mysql源不成功

目录 1.更改DNS配置 2.替换yun源 3.替换掉后,在执行 4.重新安装mysql源 hive本地模式安装mysql源出错 yum install mysql mysql-server mysql-devel -y 解决: 1.更改DNS配置 vi /etc/resolv.conf 添加下面内容: nameserver 8.8.8.8 …

RISC-V架构的压缩指令集介绍

1、压缩指令集介绍 RISC-V的压缩指令集(C扩展)‌是一种设计用于减少代码大小和提高性能的技术。标准的RISC-V指令是32位,压缩指令集可以将部分32位的指令用16位的指令替代,从未减小程序占用存储空间的大小,提高指令密…

Day13 苍穹外卖项目 工作台功能实现、Apache POI、导出数据到Excel表格

目录 1.工作台 1.1 需求分析和设计 1.1.1 产品原型 1.1.2 接口设计 1.2 代码导入 1.2.1 Controller层 1.2.2 Service层接口 1.2.3 Service层实现类 1.2.4 Mapper层 1.3 功能测试 1.4 代码提交 2.Apache POI 2.1 介绍 2.2 入门案例 2.2.1 将数据写入Excel文件 2.2.2 读取Excel文…

集星獭 | 高性能编排:为实时数据集成而生!

概要介绍 服务编排作为集星獭驱动业务流、数据流中不可或缺的重要环节,其基于分布式架构打造,提供了高可用、易扩展的可视化流程任务调度功能。 原服务编排的设计初衷是专注于任务调度,提供高性能任务调度,但是在实时调用方面的…

达梦8-达梦数据的示例用户和表

1、示例库说明: 创建达梦数据的示例用户和表,导入测试数据。 在完成达梦数据库的安装之后,在/opt/dmdbms/samples/instance_script目录下有用于创建示例用户的SQL文件。samples目录前的路径根据实际安装情况进行修改,本文将达梦…

windwos defender实现白名单效果(除了指定应用或端口其它一律禁止)禁止服务器上网

一、应用场景说明 当我们的一台windows服务器中毒,变成别人肉鸡,不断向外请示非法网站或攻击其它服务器。 要彻底清除相关木马或病毒往往需要的时间比较长,比较有效的方法是禁止服务器主动向外发包除了网站端口和远程程序除外。 其实这就是一…

1 JVM JDK JRE之间的区别以及使用字节码的好处

JDK jdk是编译java源文件成class文件的,我们使用javac命令把java源文件编译成class文件。 我们在java安装的目录下找到bin文件夹,如下图所示: 遵循着编译原理,把java源文件编译成JVM可识别的机器码。 其中还包括jar打包工具等。主要是针对…

【机器人】机械臂轨迹和转矩控制对比

动力学控制和轨迹跟踪控制是机器人控制中的两个概念,它们在目标、方法和应用上有所不同,但也有一定关联。以下是它们的区别和联系: 1. 动力学控制 动力学控制是基于机器人动力学模型的控制方法,目标是控制机器人关节力矩或力&…

Pytorch | 从零构建ParNet/Non-Deep Networks对CIFAR10进行分类

Pytorch | 从零构建ParNet/Non-Deep Networks对CIFAR10进行分类 CIFAR10数据集ParNet架构特点优势应用 ParNet结构代码详解结构代码代码详解SSEParNetBlock 类DownsamplingBlock 类FusionBlock 类ParNet 类 训练过程和测试结果代码汇总parnet.pytrain.pytest.py 前面文章我们构…

Go1.21.0 到 Go1.23.0 的改动,向前兼容性和toolchain规则,Go1.21.0,必须升级你的Go啦

Go各版本Release Note Go1.21.0 2023-08-08 https://go.dev/doc/go1.21 内置方法 min & max:返回一个序列中的最大值最小值。 https://go.dev/ref/spec#Min_and_max clear:清空map和slice。 https://go.dev/ref/spec#Clear 标准库 log/slo…

Unity中的委托和事件(UnityAction、UnityEvent)

委托和事件 🎒什么是委托,委托的关键字是Delegate,委托是一种函数的容器,运行将函数做为变量来进行传递 通过Delegate关键字我们声明了一个无参无返回的委托,通过这个委托我们可以存储无参无返回的函数 public deleg…

uniapp v-tabs修改了几项功能,根据自己需求自己改

根据自己的需求都可以改 这里写自定义目录标题 1.数组中的名字过长,导致滑动异常2.change 事件拿不到当前点击的数据,通过index在原数组中查找得到所需要的id 各种字段麻烦3.添加指定下标下新加红点显示样式 1.数组中的名字过长,导致滑动异常…

CAD xy坐标标注(跟随鼠标位置实时移动)——C#插件实现

效果如下: (使用方法:命令行输入 “netload” 加载此dll插件,然后输入“zbbz”运行,选择文件夹即可。支持字体大小变化,输入“zbbd”可设置坐标字体变大或缩小的倍数) 部分代码如下:…

【C#】实现Json转Lua (Json2Lua)

关键词: C#、JsonToLua、Json2Lua、对象序列化Lua 前提需引入NewtonsofJson,引入方法可先在Visual Studio 2019 将Newtonsoft.Json.dll文件导入Unity的Plugins下。 Json格式字符串转Lua格式字符串,效果如下: json字符串 {"1": &q…

Redis 7.x如何安装与配置?保姆级教程

大家好,我是袁庭新。最新写了一套最新版的Redis 7.x企业级开发教程,今天先给大家介绍下Redis 7.x如何在Linux系统上安装和配置。 1 Redis下载与安装 使用非关系型数据库Redis必须先进行安装配置并开启Redis服务,然后使用对应客户端连接使用…