vlambda博客
学习文章列表

分布式事务在工商银行的探索实践

精彩推荐


文丨中国工商银行金融科技研究院云计算实验室 张丹枫


互联网金融时代下,主机集中式架构难以适应新形势下的业务快速发展,金融信息系统开始向分布式架构转型探索,分布式事务作为基础技术成为了转型关键所在。传统主机通过DB2数据库或CICS中间件即可解决事务一致性问题,分库分表后的分布式事务一般遵循BASE特性,即基本可用、软状态和最终一致性,目前业界主流的事务模型主要有SAGA模型、TCC模型和消息模型。工商银行通过研究各类开源产品如何解决事务最终一致性问题,自主研发了完全贴合行内架构布局的分布式事务平台,目前已大量运用于借贷等关键交易。该平台具有完善的事务模型、便捷的开发使用、灵活的部署模式、高可用/易扩展、完备的运维监控。未来,工商银行将持续推动金融科技创新,保证金融服务的稳定运行。


互联网金融时代下,由于金融产品和服务模式的不断创新,传统单体IT架构难以支撑金融行业的快速发展,为此金融信息系统纷纷向分布式架构转型。事务处理是金融科技的基础技术,而分布式事务因其技术门槛高、挑战难度大,成为了分布式架构转型的关键所在。开源技术社区一直未能孕育出满足金融行业需求的分布式事务平台,各家金融机构也尚处于摸索阶段。工商银行在信息系统建设方面一直走在业界前列,积极探索分布式事务领域,致力于解决分布式架构下跨应用、跨服务的事务一致性问题。


一、主机业务行业现状


传统主机对外属于一个独立的集中式系统,应用内、应用间事务由主机统一管理,使用“同城双活+异地冷备”部署模式,园区之间数据通过DB2成熟的数据同步机制实现数据同步。事务处理机制上,主机每个分区内部通过DB2数据库事务提供事务一致性的系统级保障,跨分区调用通过CICS二阶段提交机制提供强一致性的事务系统级保障。而在大规模分布式调用场景下,网络的不可靠性会成倍地延长事务的处理时间,产生大量数据库锁及数据不可用,因此,主机原有架构无法满足分布式系统的分布式事务需求。


二、业界关于分布式事务的模型原理


分布式事务一般拥有BASE特性,即基本可用、软状态和最终一致性。“基本可用”是指分布式系统在出现故障的时候,允许损失部分可用性,即保证核心可用;“软状态”是指允许系统存在中间状态,而该中间状态不会影响系统整体可用性;“最终一致性”是指系统中的所有数据副本经过一定时间后,最终能够达到一致的状态。


基于BASE理论,目前业界主流的最终一致性分布式事务模型主要有SAGA模型、TCC模型和消息模型。


1.SAGA模型:冲正补偿

SAGA模型是指一个事务有多个参与者,每个参与者都实现其正向交易和反向交易。业务流程中执行各参与者正向交易,当出现失败时则补偿前面已完成交易的反向交易,其特点是业务流程不锁数据库资源,按交易流程顺序高效运行,在正交易完成后业务立即落地,数据客户可见。


该模型适用于工作流、业务流等自身隔离性强的场景,或对同一业务数据修改无并发的场景,在银行业务领域可以运用于账户开户/销户、个人贷款合同转按揭、个人理财产品协议签订等场景。例如,在个人理财交易账户开户的情景中,先创建交易理财账号,再更新个金介质,最后登记客户协议关系。若交易执行异常,则根据异常时点分别执行补偿交易,解除客户协议关系,个金介质更新回滚,交易理财账号注销。SAGA模型原理如图1所示。


图1 SAGA模型原理


2.TCC模型:二阶段提交

TCC模型的一阶段执行Try交易,做业务检查和预留资源。根据Try交易反馈结果执行二阶段:业务事务执行提交Confirm;业务取消Cancel并释放预留资源,其特点是使用业务锁来实现不同交易间隔离,同时应用需要对业务进行TCC适配的改造,因此业务场景的侵入性较大。


该模型适用于账务核算、热点账户等涉及一借多贷的可能造成银行账务风险的业务场景,或对同一业务数据修改需做隔离保护的场景,在银行业务领域可以运用于储蓄式国债买入、个人结售汇实时交易、个人理财产品购买、通用转账服务等。如客户A向客户B转账的情景:客户A执行一阶段,将账户内转账资金转移写入账户资金保留表;客户B执行一阶段,检查账户是否正常;执行二阶段确认时,将客户A的这笔保留资金扣除,对客户B账户做资金入账;执行二阶段取消时,将客户A的这笔资金解保留划入正常金额,客户B账户无操作。TCC模型原理如图2所示。


分布式事务在工商银行的探索实践

图2 TCC模型原理


3.消息模型:异步提交

消息模型针对异步调用或分布式消息场景,用于保障主事务和消息事务的一致性。若主业务成功,由该业务产生的消息事务必须成功调用,否则丢弃该消息事务,其特点是通过异步实现两个系统间的解耦和并发的缓冲。


该模型适用于下游分支事务处理依赖于上游调用方事务结果的业务,或下游分支事务无法回滚的业务场景,在银行业务领域可以运用于消费积分、业务通知短信、代办事项通知等。消息模型原理如图3所示。


分布式事务在工商银行的探索实践

图3 消息模型原理


三、工商银行对分布式事务的

探索与实践


工商银行基于业界主流的分布式事务理论模型,研究各类开源产品如何解决事务最终一致性问题,于2017年启动分布式事务平台的自主研发。该平台完全贴合工商银行应用布局及分库分表架构,为各类业务场景提供完备的事务一致性解决方案。目前分布式事务平台已大量运用于借贷等关键交易,接入几十个应用,提供日均上亿的事务服务调用。工商银行分布式事务平台架构如图4所示。


图4 工商银行分布式事务平台架构


面对复杂的主机交易场景,工商银行考虑从四个方面着手建设分布式事务平台:一是功能全面,力求覆盖各类主机业务场景;二是便捷研发,缩减开发部门接入的工作量;三是高可用易扩展,具备极致容量的企业级服务能力;四是安全稳定,形成精细化管理的监控运维体系。


1.面对多样化金融业务场景,构建分布式事务核心能力

目前,工商银行已有近10亿个账户且仍在快速增长,每日处理近2亿笔支付结算业务,对数据更新性能、数据一致性、高可用能力要求极高。金融同业普遍采用大型主机为客户提供基本结算服务,在此基础上,工商银行运用分布式事务平台提供联机事务处理能力,支持跨应用、跨节点的服务调用及事务一致性保证。该平台对标业界自研了SAGA、TCC和消息三种模型支撑方案,并支持同库和异库两种部署模式,采用Dubbo实现微服务间调度,传递事务上下文和事务服务端的交互,采用Kafka实现消息的传递和并发缓冲,通过将事务协调控制器和配套表结构部署在业务应用侧,实现同库部署及解耦事务服务端的依赖。


工商银行作为国内首家采用分布式技术进行大规模账务处理的银行,已经实现个人借记卡从开销户、消费到账务余额处理等完整的账户类业务处理功能,并完成全部权益类账户下移主机。


2.采用轻量级事务中间件,提升接入分布式事务的效率

分布式事务平台采用低侵入性、轻量级的框架,开发部门仅需进行简单的事务配置,并添加注解即可实现分布式事务的自动一致性保障,不仅未影响应用业务调用流程,还大幅度缩减了应用开发工作量。


分布式事务平台通过Dubbo Filter隐式传参将事务上下文非侵入的在服务间传递,业务应用仅需在服务方法上配置主事务/分支事务注解,即可开启/登记事务日志,并由事务协调控制器自动完成事务的调度及异常重试,开发人员无需关注这方面的编码。此外,分布式事务平台还具有多种扩展特性,以支持不同场景下应用的快速接入:TCC模型二阶段执行异步化,为应用进一步提升事务运行性能;分支事务自定义Filter链,增强分支事务前后置处理逻辑;事务群组自定义路由配置,支持应用多分片部署下,回调代理Agent的自动寻址。


3.具备隔离性强、可扩展、高可用的事务企业级服务能力

分布式事务平台基于服务自定义路由及动态配置热更新能力,完成租户隔离、动态横向分片扩展、园区级异常高可用切换等核心企业级能力落地,全面提升分布式事务服务端运行的稳定性。隔离性方面,应用通过配置租户变量路由到不同事务日志接收服务,并单独分配存储资源,物理隔离应用间影响;扩展性方面,服务无状态部署,支持在PaaS云平台水平伸缩,实时切换流量到新增扩容分片;高可用方面,各园区多点接入,对于园区级异常,通过Apollo配置中心设置策略可实时切换园区。


分布式事务平台支持应用同库部署分布式事务,相比于异库部署模式的服务端依赖协调,同库模式由发起方应用负责事务协调,数据高可用跟随应用部署,减少与服务端的交互,运行性能方面也更优。


4.形成快速响应、精细化管理的事务级监控运维体系

分布式事务平台建立事务调用链路回溯、异常事件报警、人工介入处理、日终运行报表、运行策略管理等运维监控机制,保障事务生产运行的可查可控。


一是完整的事务调用链路,协助分析性能容量。引入自研的全息监控平台对事务调用链路作回溯,协助分析事务性能及处理逻辑。二是精确实时的异常报警,引导运维及时介入。通过引入实时监控事件报警组件,及时发现异常事务并根据报警和异常信息,人工查询事务执行日志,确认事务不一致后及时介入处理。三是详细的日终统计报表,明确事务治理方向。通过批量作业统计事务每日运行报表、不同事务状态维度下各事务群组执行情况及一定时间段内事务交易量趋势,明确事务治理方向。四是完善的配置管理策略,维持环境运行稳定。事务平台在Apollo配置中心的运行策略可调整服务路由规则、园区切换开关、灰度发布规则、白名单控制清单等,提升事务运行的稳定性。


四、未来展望


随着IT架构转型的持续推进,工商银行逐步构建起主机和平台双核心,保证金融服务的稳定运行,支撑高频业务快速增长。后续,工商银行将持续完善分布式技术体系,一方面推动业务群组单元化部署,拆分应用和数据并调整多园区架构,使大量本地交易能在同一单元内高效闭环,从而有效解决跨地域访问,提升分布式事务的处理性能;另一方面推进SAGA与TCC模型的兼容适配能力,并试点落地AT自动提交事务模型,以适应复杂的主机交易场景,减少应用接入成本,提升分布式事务的易用性。


未来,工商银行将以“开放性、高容量、易扩展、成本可控、安全稳定、便捷研发”为建设理念,在分布式事务领域积极推动技术创新、管控升级,覆盖银行核心业务的事务一致性场景,为智慧银行建设提供有力支撑。


本文刊于《中国金融电脑》2021年第7期