解读金融高频交易不出错的金手指:分布式事务管理
摘要: 云原生 2.0 时代,微服务架构下如何保证数据的一致性是非常重要的一个课题。4 月 8 日,在华为云 TechWave 全球技术峰会分布式云分论坛上,华为云技术专家深度解读华为云分布式事务管理 DTM。
本文分享自华为云社区《华为云分布式事务管理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,SpringCloud,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 也将作为一款强大的分布式事务管理中间件,支撑各行各业,各种服务,去处理数据的一致性。
版权声明: 本文为 InfoQ 作者【华为云开发者社区】的原创文章。
原文链接:【http://xie.infoq.cn/article/c746c20011c4476c2a64f7dba】。文章转载请联系作者。
评论