当前位置: 首页 > 网络应用技术

基于传奇的分布式交易计划着陆

时间:2023-03-05 22:54:35 网络应用技术

  随着微服务体系结构的兴起,越来越多的公司在其业务结构上进行了微服务。在微服务结构中,随着服务的逐步分配,数据库的私有化已成为行业中不成文的规则。微服务分解带来的数据一致性问题变得越来越严重。如何解决这个问题已成为微服务架构过程中非常重要的问题。从此我们导致分布式交易的概念以解决上述背景所带来的问题。让我们在引入分布式交易之前审查交易是什么。

  事务是数据库操作的最低工作单元,它是一系列作为单个逻辑工作单元执行的操作。这些操作已提交整个系统,或者全部被执行或未执行;该交易具有酸的四个主要属性。

  A(原子):原子能,所有构成交易的操作,要么执行这些交易,要么不是全部,并且某些成功的部分不可能失败。

  C(一致性):一致性,在执行交易之前和之后,数据库的一致性约束尚未损坏。例如:数据库约束帐户的余额必须大于0,因此将其设置为非数量- 符号。在此约束下,A仅100元,但必须转移到200元。目前,数据库将保持约束的一致性并触发回滚。

  I(隔离):隔离,数据库中的交易通常是并发的,隔离意味着执行并发交易的两个事项不会干扰。一项交易无法看到其他交易的操作过程的中间状态。通过配置的交易隔离级别,您可以避免肮脏和重复的问题。

  D(耐久性):耐久性后,交易完成后,事务将数据更改为数据库,并且不会回滚。

  在了解交易的基本概念之后,让我们看看什么是分布式交易。

  在分布式系统中,应用程序系统分为独立部署的多个服务,因此可以完成服务和服务之间的远程协作,以完成交易操作。通过网络之间的网络远程协作,不同的服务通过网络之间的网络进行了远程协作。完整的交易称为分布式交易。

  从架构的角度来看,分布式交易基本上涉及两个类别。

  第一个类别:事务请求仅涉及单个服务,但它将操作多个数据库表,并且在最终完成之前完成了多个数据库表的操作。

  第二类:一项交易涉及多个服务。同时,每个服务都可以连接一个或多个数据库。它需要与多个独立服务合作才能访问多个数据存储,然后才能完成。

  我们的共同分布式交易,以确保数据的一致性分为两类:强烈的一致性和最终一致性。

  解决强大一致性分布式事务的解决方案:通常两个阶段提交协议2PC和三个阶段提交协议3PC.IN Micro -Service Architture,此方法不太合适,原因如下:

  因为无法在微服务之间直接执行数据访问,因此通常由RPC或HTTP API执行微服务调用,因此我无法再使用Micro -Service RM的TM统一管理

  不同的微服务使用数据源的类型。

  即使微服务所使用的数据源支持交易,如果您使用大型交易来管理许多微服务事务,那么维持这一大型交易的时间将比本地事务多。长期交易和交叉服务事务将会用于生产许多锁和数据,这些锁和数据严重影响系统性能

  因此,我们通常使用最终一致性来确保分布式系统的一致性。

  常见的最终一致性分布式交易解决方案是:事件通知模式(本地异步事件服务模型,外部事件服务模式,MQ交易消息模式,最大努力通知模式)和交易补偿模式(SAGA,TCC)。我们通过调查上述解决方案:

  在下面,我们使用业务方案来了解什么是分布式交易,以及我们在创新行业使用哪些解决方案来解决数据一致性问题。

  假设有一个点标志系统,则有一个功能场景,可以签署以交换点兑换项目。

  我们要做的就是如下:

  对于上述业务方案,我们应该如何实施分布式交易以满足业务需求。以下主要讨论交易补偿模型以实现分布式交易。

  TCC分为尝试,确认和取消的三个操作。

  对于上述业务方案,根据业务背景实现TCC分布式交易。

  如果您想实现TCC的分布式交易,首先要做的就是了解业务的主流过程和每个界面提供的业务含义,而不是直接完成此业务操作,而是要完成尝试(预先尝试)- 处理)操作。

  例如:向用户添加点,我们不会直接添加点,并首先准备添加点。我们不要直接扣除库存,并冻结将首先扣除的库存。

  如果Try的逻辑成功,TCC开始执行业务确认操作以完成整个交易过程。ADD用户点扣除库存和其他操作。如果Try's逻辑部分成功并且存在一些问题,则开始执行取消操作并取消所有操作。

  通常,对于TCC模式,要进行分布式事务,业务中的一个接口需要完成3个逻辑转换,即Try-Confirm-Cancel。

  TCC模型在业务上相对较强,过程很麻烦。每个业务方面都需要支持升级。对于我们的创新行业,成本有点大。我们选择了另一个模型来实现分布式交易-SAGA模型。

  传奇是纯粹的业务补偿模型。它的设计概念是,在调用服务时,业务正常提交。当服务失败时,其所有取决于业务补偿运营的上游服务。

  传奇的基本概念:

  传奇两种恢复策略:

  传奇事务的优势和缺点:

  对于上述业务背景,我们只需要支持交易提交和失败补偿接口(c)的接口(t)。特定过程如下:

  对于传奇事务,只有两个州完成且未完成。所有交易的成功或所有薪酬成功都被认为已完成。异常的发生导致该过程中断为未完成的状态。业务提交的代码状态是分辨出远期恢复(重试)或返回薪酬(滚动)。对于没有薪酬c的业务,我们将进行恢复,直到成功为止。对于异常条件,未完成的SAGA交易是使用离线补偿来偿还的。如果长期无法完成,则将触发并手动处理警报。

  我们已经基于上述传奇模型开发了传奇的交易协调员。特定的执行过程如下:

  业务方需要实施相应交易的执行方法和补偿方法,并使用报告分布式交易的方法进行操作。

  业务方根据上述规则报告了数据。交易最终将确保数据的一致性,或者都是成功的,或者他们无法退缩。

  我们的创新行业使用传奇模型来实施分布式交易,以解决每日微服务拆分带来的数据一致性,满足我们日常产品功能的需求并解决困难问题。

  分布式交易解决方案有其自身的特征。没有最佳解决方案。有必要选择适当的模式与实际应用程序方案相结合。

  推荐阅读:

  云尼亚时代的搜索服务计算电源管理

  谈论小型计划开源业务的建设

  Baidu applet软件包流下载和安装优化

  FAAS SSR解决方案用于前端工程

  中东登录并不严重或丢失。

  百度TOB TOB垂直帐户权限平台的设计和实践平台

  原始:https://juejin.cn/post/70970729477700957198