iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >分布式事务该如何理解
  • 939
分享到

分布式事务该如何理解

2023-06-02 23:06:54 939人浏览 八月长安
摘要

这篇文章给大家介绍分布式事务该如何理解,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。先上场景:压力测试,同时1万个买家在店铺Shang1购买东西,每个买家账户向shang1账户付钱。    &nbs

这篇文章给大家介绍分布式事务该如何理解,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

先上场景:压力测试,同时1万个买家在店铺Shang1购买东西,每个买家账户向shang1账户付钱。
      这个例子中,有这么几个步骤:买家创建商品订单=>发送到交易系统=>交易收到支付请求创建交易订单=>判断买家账户余额是否足够=>扣除买家余额=>增加商户shang1账户余额=>记账=>返回支付成功信息。
     压力测试后,调出oracle等待事件,发现瓶颈在扣除客户余额这个步骤,明显,只有一个店铺,余额更新必须排队。1万个客户买东西可以并发买东西,扣除客户余额可以并发,但是更新店铺余额只能一个个来。怎么解决?
     解决办法:分两个步骤,第一步骤,扣除买家余额后同时增加买家冻结资金,然后马上返回提示,返回支付成功信息。但是商户没有收到钱。第二步骤,在系统低峰时期,扣除买家冻结资金=>增加商户shang1账户余额=>记账=>返回更新成功。只要提前告知商户,高峰期交易资金不是实时到账,但保证在一定时间之内结算完成,商户应该也是可以理解的。
2.场景:一台oracle数据库最多能支撑多少个连接?4000个。如果超出这些连接后怎么办还需要连接,怎么办?
       解答:把系统分成2个业务,变成2oracle 实例提供业务,就变成8000个连接,就可以了。

3.机票代理商的机票预订服务
分布式事务该如何理解

该机票服务提供多程机票预订服务,可以同时预订多趟行程航班机票,比如从北京到圣彼得堡,需要第一程从北京到莫斯科,以及第二程从莫斯科到圣彼得堡。

当用户预订机票时,肯定希望能同时预订这两趟航班的机票,只预订一趟航班对用户来说没有意义。因此,对于这样的业务服务同样提出了原子性要求,如果其中一趟航班的机票预订失败,另外一趟需要能够取消预订。

但是,由于航空公司相对于机票代理商来说属于外部业务,只提供订票接口和取消预订接口,想要推动航空公司改造是极其困难的。因此,对于此类业务服务,可以使用补偿型 TCC 分布式事务解决方案,如下:

分布式事务该如何理解

网关服务在原有逻辑基础上增加 Compensate 接口,负责调用对应航空公司的取消预订接口。

在用户发起机票预订请求时,机票服务先通过网关 Do 接口,调用各航空公司的预订接口,如果所有航班都预订成功,则整个分布式事务直接执行成功;一旦某趟航班机票预订失败,则分布式事务回滚,由 TCC 事务框架调用各网关的 Compensate 补偿接口,其再调用对应航空公司的取消预订接口。通过这种方式,也可以保证多程机票预订服务的原子性。

场景:网站每个商品页面有个计数器,用于计算每次访问量,买家每访问一次加1.变成数据库更新的话,就会直接拖垮数据库,但是使用cache数据的话,轻松解决这个问题。

5.场景: 账务拆分的业务场景如下,分别位于三个不同分库的帐户A、B、C,A和B一起向C转帐共80元:
(1)Try:尝试执行业务。

  • (2)Confirm:确认执行业务。

    • (3)Cancel:取消执行业务

      • 小结:到底要不要使用TCC到底要不要使用TCC事务,取决于以下几点:

      • <ul class="list-paddingleft-2"  font-size:16px;white-space:nORMal;background-color:#ffffff;"="">

      • 是否真正有保证跨应用业务操作的原子性需求。

      • 研发上能否投入资源开发相对应的TCC接口。

      • 当然还有最后一点,能否搞定一个稳定的、高可用的、扩展性强的TCC事务管理器。

             一个问题,如果TCC事务在Try阶段所有参与方(从业务服务)成功了,但是Confirm阶段部分参与方(从业务服务)成功,如何处理?

支付宝是怎么诞生的?
架构的进化过程中,业务的进化也非常迅猛。最早的时候,买家打钱给卖家都是通过银行转账汇款,有些骗子收了钱却不发货,干脆逃之夭夭。这是一个很严重的问题,一个人这么干了之后,很快就有更多的人学会了(这就是传说中的“病毒传播”)。然而魔高一尺,道高一丈,淘宝网这伙人开始研究防骗子的解决方案,他们看了PayPal的支付方式,发现不能解决问题。研究了类似QQ币的东西,想弄个“淘宝币”出来,发
现也不行。后来这几个聪明的脑袋把这些想法糅合起来,突然想到了“担保交易”这种第三方托管资金的办法。于是在2003年10月,淘宝网上线了一个功能,叫做“安全交易”,卖家如果选择支持这种功能,买家就会把钱交给淘宝网,等他收到货之后,淘
宝网再把钱给卖家,这就是现在的“支付宝”。这个功能最早是让卖家可选的,因为这会延迟他收款的周期。但一旦卖家用了这个之后,就发现交易量猛增,一年之后,几乎所有的卖家都选择担保交易,到后来干脆所有的交易都必须走担保交易。在2012年
支付宝的年会上,支付宝公布2011年的交易笔数已经是PayPal的两倍。这个划时代的创新,其实就是在不断思索过程中的一个灵光乍现.

7.我看这张图,来来回回研究好多次,终于明白了分布式事务全局
分布式事务该如何理解

关于分布式事务该如何理解就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: 分布式事务该如何理解

本文链接: https://www.lsjlt.com/news/231721.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 分布式事务该如何理解
    这篇文章给大家介绍分布式事务该如何理解,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。先上场景:压力测试,同时1万个买家在店铺Shang1购买东西,每个买家账户向shang1账户付钱。    &nbs...
    99+
    2023-06-02
  • 如何理解分布式事务
    本篇内容主要讲解“如何理解分布式事务”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解分布式事务”吧!事务要说分布式事务,首先...
    99+
    2024-04-02
  • 如何理解Java分布式事务
    今天小编给大家分享一下如何理解Java分布式事务的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下...
    99+
    2024-04-02
  • 分布式事务使用Seata的AT事务模式如何理解
    分布式事务使用Seata的AT事务模式如何理解,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。项目使用了微服务,并且将一些模块进行了拆分,现在遇到了一个批量保存的场景,而且还...
    99+
    2023-06-19
  • 如何理解TiDB的分布式事务模型
    本篇内容介绍了“如何理解TiDB的分布式事务模型”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在传统关系型...
    99+
    2024-04-02
  • 基于Zookeeper的分布式锁该如何理解
    今天就跟大家聊聊有关基于Zookeeper的分布式锁该如何理解,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。实现分布式锁目前有三种流行方案,分别为基于数据库、Redis、Zookee...
    99+
    2023-06-04
  • C#开发中如何处理分布式事务和分布式缓存
    C#开发中如何处理分布式事务和分布式缓存,需要具体代码示例摘要:在分布式系统中,事务处理和缓存管理是至关重要的两个方面。本文将介绍C#开发中如何处理分布式事务和分布式缓存,并给出具体的代码示例。引言随着软件系统的规模与复杂度增加,许多应用都...
    99+
    2023-10-22
    分布式缓存 C#开发 分布式事务处理
  • 何为分布式事务
    这篇文章主要介绍“何为分布式事务”,在日常操作中,相信很多人在何为分布式事务问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”何为分布式事务”的疑惑有所帮助!接下来,请跟着小编一...
    99+
    2024-04-02
  • 如何理解分布式Raft
    本篇内容主要讲解“如何理解分布式Raft”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解分布式Raft”吧!一、Raft 概述Raft 算法是分布式系统开...
    99+
    2024-04-02
  • 如何利用Redis实现分布式事务管理
    如何利用Redis实现分布式事务管理引言:随着互联网的快速发展,分布式系统的使用越来越广泛。在分布式系统中,事务管理是一项重要的挑战。传统的事务管理方式在分布式系统中难以实现,并且效率低下。而利用Redis的特性,我们可以轻松地实现分布式事...
    99+
    2023-11-07
    管理 redis 分布式事务
  • 详解Java TCC分布式事务实现原理
    目录概述业务场景介绍进一步思考落地实现 TCC 分布式事务TCC 实现阶段一:TryTCC 实现阶段二:ConfirmTCC 实现阶段三:Cancel总结与思考最终一致性分布式事务如...
    99+
    2024-04-02
  • 如何理解C#.NET分布式锁服务
    本篇文章给大家分享的是有关如何理解C#.NET分布式锁服务,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。背  景分布式锁服务在大家的项目中或许用的不多,因为大家都把排...
    99+
    2023-06-17
  • 如何进行分布式事务框架GTS全解析
    今天就跟大家聊聊有关如何进行分布式事务框架GTS全解析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。全局事务服务(Global Transaction Service,简称 GTS)...
    99+
    2023-06-04
  • 讲解如何利用 Python完成 Saga 分布式事务
    目录1、分布式事务2、SAGA3、SAGA 实践4、处理网络异常5、处理回滚6、小结 银行跨行转账业务是一个典型分布式事务场景,假设 A 需要跨行转账给 B,那么就涉及两个银行的数据...
    99+
    2024-04-02
  • Spring Boot + RabbitMQ如何实现分布式事务
    小编给大家分享一下Spring Boot + RabbitMQ如何实现分布式事务,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一:分布式事务解决方案1.两阶段提交(2PC)第一阶段:事务协调器要求每个涉及到事务的数据库预提...
    99+
    2023-06-03
  • 如何在Redis中实现分布式事务
    在Redis中实现分布式事务可以通过使用 Redis 的事务机制 MULTI/EXEC 和 WATCH 命令来实现。以下是实现分布式...
    99+
    2024-04-09
    Redis
  • 如何用C#实现SAGA分布式事务
    目录背景成功的 SAGA异常的 SAGA子事务屏障写在最后背景 银行跨行转账业务是一个典型分布式事务场景,假设 A 需要跨行转账给 B,那么就涉及两个银行的数据,无法通过一个数据库的...
    99+
    2022-11-13
    Saga分布式事务 C#实现SAGA分布式事务
  • 解析探秘fescar分布式事务实现原理
    目录前言项目说明fescar的TXC模型项目结构解析通过【examples】模块的实例看下效果第一步、第二步、第三步、fescar事务过程分析首先分析配置文件【TM】模块启动全局事务...
    99+
    2024-04-02
  • 分布式事务实战
    转载本文需注明出处:微信公众号EAWorld,违者必究。引言:微服务倡导将复杂的单体应用拆分为若干个功能简单、松耦合的服务,这样可以降低开发难度、增强扩展性、便于敏捷开发,从而被越来越多的开发者和公司推崇运用。但系统微服务化后,一个看似简单...
    99+
    2023-06-05
  • java常见分布式事务理论怎么解决
    本篇内容介绍了“java常见分布式事务理论怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!CAP理论先从定义开始:C(Consiste...
    99+
    2023-06-21
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作