金融级分布式交易的技术路径

以下文章来源于金融级分布式架构,作者程立

金融级分布式交易的技术路径

文章插图
 
金融级分布式架构
致力于打造一流的分布式技术在金融场景应用实践的技术交流平台,专注于交流金融科技行业内最前沿、可供参考的技术方案与实施路线 。
本文公众号首发于金融级分布式架构,经授权转载
移动互联网、大数据与云计算作为新的基础设施,催生了新的互联网经济,也正在推动各行各业的升级 。在过去十多年中,金融服务飞速发展,移动支付支撑了零售业线上线下的变革,基于大数据的信贷服务支持了无数小微企业的创业创新,老百姓可以随时随地享受曾经高门槛的理财、保险等金融服务 。以普惠服务为目标、数据与技术驱动、新型信用体系为基础的新金融已经成为新经济的基石 。
伴随着蚂蚁金服在新金融领域的探索,蚂蚁金服技术团队也在金融技术与架构领域不断开拓 。从 2005 年每秒处理 1 笔交易到 2015 年双十一每秒处理 8.59 万笔交易,从单一的支付到覆盖微贷、理财、保险、信用、银行等,通过十多年的探索与实践,我们形成了一套包含金融级分布式交易、分布式大数据分析与决策等在内的完整架构与技术体系 。
在本文中,我们将与大家交流金融级分布式交易相关的实践与体会 。
金融级系统的关键目标
如果将建造系统比作盖楼的话,建一个常规的系统要先立稳四根柱子:高可用、安全、性能、成本 。但要建一个移动互联网时代的金融级大厦,除了上述四根柱子需要更加牢固,还需要加上两根柱子:资金安全与数据质量 。这六根柱子,是我们在架构蚂蚁金服的每一个系统时的首要目标 。
具体来说,我们对一个金融级系统有以下关键目标:
高可用:具备 99.99% 以上的高可用性 。系统能够容忍各种软硬件设施的故障,可以在服务不中断的情况下进行升级,在严苛的应用场景下保证承诺的服务质量,容忍各种人为失误 。对于关键系统,还需要具备异地容灾能力 。
安全:具备多层次检测、感知与防御各类安全攻击的能力 。系统有能力实时、精细地分析系统行为与数据流发现异常,必要时可以快速调集资源阻断大规模、有组织的攻击 。
性能:对于实时交易业务,要求极快的响应时间与极高并发能力 。对于批量业务,要求极大的吞吐量 。尤其重要的是,系统必须具备很强的可伸缩性与弹性,在需要时可以快速调集资源应对突发的业务量 。
成本:在满足高可用、安全与性能的前提下,成本是一个重要约束 。我们将单笔交易的平均处理成本(月交易总笔数/月成本)、以及峰值交易的处理成本(每提升 1000 交易 TPS 需要追加的成本)作为两个关键指标去持续优化 。除了必须在基础软硬件与系统关键链路上做极致的优化外,灵活的资源调度与按需伸缩能力是优化成本的关键 。
资金安全:这是金融级系统与常规系统的一个关键差异 。要做到资金处理绝对不出差错,需要交易与数据具备强一致性,需要在任何故障场景数据不丢不错,需要具备准实时的交易资金核对能力,需要在异常场景下有精细化熔断与快速恢复能力 。
数据质量:数据质量是金融服务质量的基础 。数据从采集、生成、流转、存储、计算、使用需要经历很多环节,要确保经过这么多环节后,数据依然是准确、完整和及时的,需要系统具备全链路的数据质量管控与治理能力 。
金融交易系统是否可以走分布式路线?如何基于分布式的思想与技术达到以上 6 个关键目标?接下来,我们就以蚂蚁金服的实践为基础,分享对这个问题的观点 。
分布式金融交易架构与技术
1
强一致的微服务:微交易架构
微服务是一种广泛应用的分布式架构 。通过将系统分解为单一职责、高内聚、松耦合、独立部署、自主运行的“微“服务,可以极大提升系统的灵活性与扩展能力 。但由于每一个微服务是自包含的数据与计算单元,当一个有严格一致性要求的交易,被分布在很多节点上执行时,如何保证数据与服务处理达到金融级的强一致性,成为一个难题 。尽管可以用支持分布式事务的数据库或数据中间件来保证数据分布时的一致性,但解决不了当服务分布时的一致性问题 。由于分布式事务对资源加锁的时间长、粒度大,也制约了系统的可伸缩性与高可用性 。
为了解决这个难题,我们提出一种使微服务具备强一致性的微交易架构 。在这种架构中,涉及到交易操作的微服务具备事务属性 。一个微交易提供三种操作TCC(Try-Confirm-Cancel),其中 Try 操作负责业务检查与资源预留,Confirm 操作负责实际操作,Cancel 操作负责释放预留的资源 。一次完整的交易由一系列微交易的 Try 操作组成,如果所有的 Try 操作都成功,最终由微交易框架来统一Confirm,否则统一 Cancel,从而实现了类似经典两阶段提交协议(2PC)的强一致性 。但不同于 2PC,微交易架构力求高效与可伸缩 。TCC 三个操作都是基于本地事务的短事务,Try 操作只预留必须的业务资源,比如一笔交易涉及10元钱,仅预留账户中的 10 元钱,而不是锁定整个账户,TCC 协议在提交时,也没有单独的 Prepare 阶段,将提交协议的成本降到最低 。


推荐阅读