首页 > 编程知识 正文

阿里巴巴集团国际化战略分析,阿里巴巴公司层战略分析

时间:2023-05-05 06:12:27 阅读:48886 作者:4190

2019年3月,蚂蚁金服参与了分布式事务Seata的社区共建,为TCC模式做出了贡献。 本期是SOFAChannel第四期,主题:分布式事务Seata TCC模式深度解析,本文通过觉生直播进行整理。

晚上好,我是Seata Committer觉生,来自蚂蚁金服数据中间件团队。 今天的内容主要分为以下四个部分。

Seata TCC模式原理分析;

从TCC的业务模型和并发控制中共享TCC接口的设计方法,符合TCC模型;

如何控制异常;

优化性能,使TCC模型能够满足更高的业务需求。

1 Seata的TCC模式1.1服务解体

进入第一个主题,Seata的TCC模式吧。 蚂蚁金服初期是单系统架构,所有的业务服务几乎都在少数系统中。 随着业务的发展,业务越来越复杂,服务之间的耦合度也越来越高,我们要重构系统,服务按功能进行解耦和垂直分割。 分割后的问题是,只调用一个服务就完成了业务活动,但现在需要调用多个服务,网络、机器等不可靠,容易发生数据一致性问题。 与可扩展性、高可用性灾难恢复等要求相结合,金融IT体系结构成为支撑业务转型升级的最大挑战之一。

从图中可以看到,从单一系统向微服务的转换,其实是一个资源向外扩展的过程。 横向扩展资源是指,当各个机器达到资源性能瓶颈,无法满足业务增长需要时,需要横向扩展资源形成集群。 横向扩展资源以提高非热点数据的并发性能对几乎所有互联网产品都很重要。 划分服务也被认为是向外扩展资源,但只是方向不同。

横向扩展资源可能会沿着两个方向发展,包括业务划分和数据切片

分割业务。 基于功能对数据进行分组并将不同的微服务分布在多个不同的数据库中实际上是SOA架构中的服务化。 业务划分是指将业务逻辑从一个系统划分为多个微服务。

数据片。 在微服务内部,将数据拆分为多个数据库,并添加用于向外扩展的新维。 数据片是指将一个微服务下的一个DB划分为多个DB,并具有一个Sharding功能。 这种分解相当于向外扩展资源,使整个体系结构能够提供更高的吞吐量。

横向扩展的两种方法可以同时运用。 交易、支付和会计三种不同的微服务可以存储在不同的数据库中。 另外,每个微服务器内可以根据其业务量重新划分为多个数据库,每个微服务器可以相互独立扩展。

Seata关注微服务体系结构下的数据完整性问题,是一套分布式事务解决方案。 SeATa框架有两种模式,一种是at模式。 AT模式主要从数据片的角度关注多DB访问的数据完整性,当然也包括多业务中多DB数据访问的完整性问题。

另一种是TCC模式。 TCC模式主要关注业务划分,在根据业务横向扩展资源时,解决了微服务之间的调用一致性问题,保证了资源访问的事务属性。

今天主要谈TCC模式。 在说TCC之前1.2 AT模式

关于AT模式,到目前为止其他同学已经分享过很多次了,大家应该也很清楚。 在AT模式下,每个数据库都被视为资源,在Seata中称为数据源资源。 当业务通过JDBC标准接口访问数据库资源时,Seata框架会截获所有请求并执行一些操作。 提交每个本地事务后,seat arm (资源管理器)在TC (事务协调器)中注册分支事务。 请求链路调用完成后,启动器会通知TC提交或回滚分布式事务,并进入第2阶段的调用过程。 此时,TC将根据以前注册的分支事务回调相应的参与者,并执行相应资源的第二阶段。 TC如何找到分支事务与资源的对应关系? 每个资源都有全局唯一的资源ID,初始化时在TC中注册资源。 运行时,每个分支事务的注册都具有资源ID。 这样,TC可以在两阶段呼叫时正确地找到对应的资源。

这是我们的AT模型。 简单来说,将每个数据库作为Resource在提交本地事务时注册分支事务。

1.3 TCC模式

那么,对应TCC模式也一样。 Seata框架将TCC接口中的每个组作为一个资源,称为TCC资源。 该TCC接口可以是RPC,也可以是服务内的JVM调用。 业务启动时,Seata框架会自动扫描发现TCC接口的调用方和发出方。 如果是RPC,则为sofa:reference、sofa:service、dubbo:reference、dubbo:service等。

在扫描了TCC接口的调用方和发行方之后。 如果是发行方,则TCC资源在业务开始时在TC中注册,并且与DataSource Resource一样,每个资源也具有资源ID。

如果是调用方,则SeATa框架将片添加到调用方,并在运行时阻止对TCC接口的所有调用,就像在at模式中一样。 每次调用Try接口时,片都会在TC中注册分支事务,然后执行原始RPC调用。

当请求链路调用完成后,TC 通过分支事务的资源 ID 回调到正确的参与者去执行对应 TCC 资源的 Confirm 或 Cancel 方法。

在讲完了整个框架模型以后,大家可能会问 TCC 三个接口怎么实现。因为框架本身很简单,主要是扫描 TCC 接口,注册资源,拦截接口调用,注册分支事务,最后回调二阶段接口。最核心的实际上是 TCC 接口的实现逻辑。下面我将根据蚂蚁金服内部多年的实践来为大家分析怎么实现一个完备的 TCC 接口。,我们先回顾一下 AT 模式,这样有助于我们理解后面的 TCC 模式。

2 TCC 业务模式与并发控制

2.1 TCC 设计原则

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。