本文分享自华为云社区《华为云分布式事务管理DTM:6大特性解决云上微服数据一致性》,原文作者:灰灰哒。

云原生2.0时代,微服务架构下如何保证数据的一致性是非常重要的一个课题。4月8日,在华为云TechWave全球技术峰会分布式云分论坛上,华为云技术专家深度解读华为云分布式事务管理DTM。

早期线上购物,是不是出现过买家下单成功,付了钱却没收到货;卖家接到投诉却没找到订单记录,生生吃了个差评却无处说理;但是为什么现在这种情况却没有了?就是因为分布式事务的出现。“一手交钱,一手交货”就是一个事务的例子,交钱和交货必须全部成功,事务才算成功。一个活动失败,另一个也要撤销。

什么是事务?

事务可以看做是一次大的活动,它由不同的小活动组成,这些活动要么全部成功,要么全部失败。事务需要有的ACID特征:

Atomicity 原子性:整个事务的所有操作,要么全部成功要么全部失败。

Consistency 一致性:事务的执行不能破坏数据库数据的完整性和一致性,一个事务在执行之前和执行之后,数据库都必须处于一致性状态,比如数据发生故障,不能有一部分数据写成功,一部分不成功。

例如,A要向B支付100元,而A的账户中只有90元,并且我们给定账户余额这一列的约束是:不能小于0。那么很明显这条事务执行会失败,因为90-100=-10,小于所给定的约束。这个例子里,支付之前数据库里的数据都是符合约束的,但是如果事务执行成功了,的数据库数据就破坏约束了,因此事务不能成功,这里我们说事务提供了一致性的保证。

Isolation 隔离性:多个事务并发执行操作同一数据,事务之间不能有干扰。

Durability 持久性:一旦事务提交,那么它对数据库中的对应数据的状态的变更就会永久保存到数据库中,就算数据库宕机,等它恢复后,数据也能恢复到已提交事务完成的状态。

微服务趋势下的数据一致性保证

当前随着微服务,容器化,等技术的逐步成熟和火热,单体应用被拆分成了不同的功能服务,解耦之后的服务,互相调用,俨然成了典型的分布式系统,数据的一致性处理便成了刚需能力。传统的分布式事务处理,针对一个服务下的一个数据库进行处理。单体架构到微服务架构后,一个数据库本地事务变为跨服务的多个数据库全局事务,怎么保证多个数据库的数据一致性成为了企业亟待解决的问题。

面对的痛点主要有三点:

1)侵入性大耦合度高

客户往往专注于业务代码的写作,对于分布式事务的处理往往比较痛苦,而且还需要修改业务代码,可能涉及修改业务逻辑。

2)自研代价过大,云上跨AZ部署复杂

如果自研的分布式事务服务,需要满足跨AZ容灾能力的话,需要在另外一个region下购买物理资源,再部署一次自研的分布式事务微服务。更新迭代需要自己来维护,增加了运维成本和发布难度。

3)如何支持多语言的框架,多数据库类型

随着业务框架的更新版本,新增数据库类型,或者新增新的业务框架,则需要自己去维护,更新,这个自研分布式事务服务,对接多语言的框架、多数据库场景。

6大特性解决云上微服数据一致性

华为云DTM是华为云分布式事务管理中间件,提供了高可靠的分布式事务处理能力。支持跨微服务事务、跨库事务、多数据源、非侵入式事务、TCC事务、事务监控、高TPS事务处理能力及数据分析等功能场景,帮助企业满足核心业务数据(如交易数据)一致性需求。

华为云分布式事务管理DTM的6大特性解决云上微服数据一致性。

1)支持非侵入事务与 TCC 两种事务模式

非侵入模式支持0业务代码修改的接入方式,开通DTM分布式事务管理服务,购买分布式事务引擎,SDK引入DTM client,在需要参与分布式事务的服务中,添加DTM数据源,在代码中添加非侵入模式注解。TCC模式作为分布式事务处理的一种补充,主要用于支持更加广泛的数据库类型,例如NoSql类型数据库。

2)业界领先的高性能(单集群10w+ TPS)

DTM所有组件支撑水平扩展,利用独家的算法和架构,支持超高TPS的支持能力。

3)DTM支持跨 AZ 高可用

DTM 跨AZ采用2个可用区+仲裁AZ的方式进行容灾。正常工作状态下,有2套DTM server参与到事务处理中,互相之间跨AZ备份数据。当其中一个AZ挂了之后,由于之前一直在跨AZ同步数据,因此第二AZ能马上承接工作。

4)微服务框架广泛支持

支持主流的框架,例如ServiceComb,Spring Cloud,Dubbo等。

5)自动化运维管控、功能丰富的控制台

DTM拥有自动化运维控制台,实时监控DTM引擎状态,事务上报状态,对事务状态进行数据分析。并且对多个引擎,有统一的管理面进行集中式管理,切换自如。

6)数据库广泛支持

当前非侵入模式支持 MySQL,OpenGauss,TCC模式支持所有数据库类型。

分布式业务场景

1)金融场景下分布式事务管理

高频交易:证券、基金公司的高频交易,对TPS要求极高。DTM的超高性能,可保障高频交易不受性能约束。推荐使用CSE+DTM组合,CSE服务调用性能极高,DTM也支持超高性能TPS,并且二者天然兼容,直接接入,避免瓶颈。通过高性能带来的数据高效同步,可助力金融机构减少每笔交易时长,用时间赢得财富。

转账:转账业务往往涉及多数据库与高并发量,例如实时到账,需要保证强一致性,普通转账保证最终一致性。最终高效且正确的转账就是金融服务的基础。因此在转账场景中,支付和转账作为分布式事务典型场景,在应用 DTM 后,可轻松应对高并发,分库分表的业务模型,满足业务需求。

2)电商/互联网场景

订单、会员卡、成长值、积分:以积分商城为例,使用会员卡余额购买商品,会涉及到扣减账户余额(数据库)、增加账户积分数量(数据库)、会员卡成长值提升、历史订单增加等服务。目前使用对账的方式来应对此类场景的性能较低,涉及业务扩展或改变时改造成本高。使用DTM进行简单的改造接入,即可完成数据的同步。

担保交易:以电商抢购支付场景为例,秒杀抢购并发量高,性能要求高。通常流程尝试扣除用户可用资金,转移预冻结资金,增加中间账户可用资金(担保交易不能立即把钱打给商户,需要有一个中间账户来暂存),七天后需要将资金从中间账户划拨给商户。采用DTM可以大规模的抢购场景,保证客户成功支付,等到低锋期时,再慢慢消化支付数据,异步地执行资金到账流程,并且最终保证资金能顺利转入商户的账户中。

3)政务领域场景

生活缴费:作为支付、转账场景的延伸,生活缴费在政务系统中不可或缺。例如水电费,电话费,上网资费等,都通过手机APP或者电脑端进行处理缴费。政务系统需要对缴费信息进行一致性处理,DTM可以保证,关联信息同步修改,跨系统信息及时同步。

跨地域信息即刻同步:当前各地域政府机关,往往有自己的数据库,人员流动,企业信息备案,都最初在本地进行登记备案。信息变更频繁的信息化时代,仅通过手工方式进行信息变更后的同步,会带来脏读和脏写的问题,采用DTM可以保证政务机关的信息高效同步,精准一致。

未来DTM作为华为云分布式事务管理中间件,会对接更多的涉及数据一致性处理的服务。例如华为云的 serverless微服务,appCube,容器等。

DTM也将作为一款强大的分布式事务管理中间件,支撑各行各业,各种服务,去处理数据的一致性。

点击关注,第一时间了解华为云新鲜技术~

04-14 22:01