2.2.2 某省级农信社的联机交易业务应用实践
随着移动互联网的迅猛发展,分布式架构已在互联网IT技术领域广泛应用并积累了大量最佳实践。在互联网金融快速发展和利率市场化的大环境下,建设能够支持海量客户、具有弹性扩展能力、高效灵活的分布式架构应用系统,日益成为国内金融业的迫切需要。
1.分布式数据库应用是大势所趋
某省级农信社普惠金融平台建设旨在“充分运用金融科技手段,优化信贷流程和客户评价模型,降低企业融资成本,缓解民营企业、小微企业融资难、融资贵问题,增强金融服务实体经济能力”。与传统信贷系统不同,普惠金融服务是典型的互联网应用,具有互联网场景接入能力。如仍沿用集中式技术架构,在应对海量客户和控制总成本等方面存在以下潜在问题。
● 集中式架构缺乏弹性伸缩能力:随着交易量和数据量的增长,其系统整体吞吐量会遇到硬件或技术的瓶颈。尤其是在支持面向互联网客户的相关业务时,如不能有效处理瞬时爆发的高并发交易,就会影响客户获取及大规模业务营销。
● 集中式架构采用单体应用设计:软件开发和运行管理的最小单元是应用。单体应用的管理粒度较粗,容易牵一发而动全身,其开发过程也不易践行轻量化敏捷开发理念;而且当系统运行过程中出现单点故障时,难以有效进行故障隔离。
● 采购和服务成本高:集中式架构系统的基础设施通常采用高端的服务器和存储设备,以及传统关系型数据库,其软硬件成本高昂。而且,其开发和运维对厂商的依赖性较强,服务成本较高。
● 技术体系封闭:部分银行的IT团队缺乏自主可控能力,存在信息安全风险。
该省级农信社在规划新一代普惠金融平台建设时,从战略高度对上述问题进行了深入分析与思考,从横纵两个角度进行了长远的研发规划,即在数据方面着眼于分布式数据库,在功能层面则引入微服务架构,以求构建真正全方位分布式框架的金融服务底层系统;同时,响应国家关于技术自主可控的号召,选择国产分布式数据库,有效控制IT成本和实现技术自主可控。
2.国产分布式数据库应用实践
鉴于普惠金融平台的获客方式发生了变化,为了满足客户申请贷款的爆发式增长,银行需要在审批方式和流程上有所改变,这对企业征信和智能风控提出了更高的要求。而且,随着细分领域竞争的加剧,平台应用需要随时调整和迭代。经过严格评选,该省级农信社最终决定采用SequoiaDB作为底层分布式数据库平台。
该平台应用利用分布式数据库的计算-存储层分离技术,将协议解析、计算等模块与底层存储解耦——存储层通过多维分区实现弹性扩展,计算层采用无状态设计的独立部署,通过动态增加数据库实例来线性提升计算能力,以有效应对瞬时爆发的高并发海量交易。
该平台基于Spring Cloud微服务框架,在业务逻辑上将传统的单一中间件拆解为众多微服务组件。分布式数据库实例服务层提供了可选择、可适配、可动态伸缩的标准数据库计算引擎,便于银行根据应用场景灵活选择。应用开发采用数据库分布式计算引擎,面向联机交易的业务场景采用兼容MySQL的计算实例,批处理业务场景采用兼容SparkSQL的计算实例。该实例通过访问分布式数据库的不同数据副本,实现对数据的并行处理和多元利用,即一份数据具有多种用途。
以下是联机业务应用分布式数据库的几个技术要点。
1)分布式架构下的应用设计
分布式数据库的核心机制是将海量数据通过算法切分到多个分区中。每个数据分区可以分布在不同的物理服务器中,通过网络设备将这些服务器连接到一起,就可以构成一个逻辑上对外统一的数据库服务。因此,如何对数据进行均匀切分,以及如何在切分后对数据进行快速检索,是分布式策略必须优先保障的。
针对分布式数据库,有如下切分规则。
● 散列(hash)分区:指在数据写入的过程中,针对指定分区字段的值进行散列后,判断其数据物理存放分区的规则,如图2-4所示。
图2-4 散列分区
● 范围分区:指在数据写入的过程中,针对指定分区字段的值判断其所在范围,并根据数据所在范围对应的数据分区判断其物理位置的规则,如图2-5所示。
图2-5 范围分区
● 多维分区:即散列分区与范围分区的结合。如图2-6所示,在多维分区中,用户在建表时可以指定两个不同的字段,首先根据第一个字段进行范围的判定;之后再根据第二个字段,在该范围所对应的一系列物理服务器中进行散列,以判断其位置。
图2-6 多维分区
在新一代普惠金融服务平台项目中,对于数据库表结构的设计,该省级农信社面向数据特征有针对性地定义了分区字段与规则,在实践中这极大地提升了应用的效率与并发能力,避免了传统架构中数据库成为性能瓶颈与故障热点区域的问题。
2)分布式微服务架构下的数据一致性保障
用分布式数据库系统实现底层业务,会带来很多传统集中式数据库所没有的特性,比如分布式容错能力、弹性可扩展能力等。对银行等金融业来说,这些特性都是至关重要的优化因素。分布式数据库系统有此优势,主要缘于其分布式存储特性,即每个节点保存完整数据库的一部分,并在其他节点上部署副本。实现这样的分布式能力,很重要的一环就是一致性策略。
在实践的过程中,该省级农信社重点研究并解决了行业内公认的难题,即分布式环境下端到端的数据一致性与数据安全,具体方案包含如下两个方面。
● 利用柔性事务确保微服务之间的数据一致性:通过研究分布式数据库在银行领域应用的策略,深入了解分布式底层技术,利用柔性事务TCC(Try-Confirm-Cancel)实现微服务之间的数据一致性。普惠金融平台基于Spring Cloud微服务框架进行开发,应用程序开发规范明确了每组微服务必须提供TCC接口。遵循针对微服务的分布式事务所提出的RESTful TCC解决方案,结合Spring Cloud Netflix和分布式柔性事务,即可实现微服务之间的数据一致性。
● 在微服务内部通过分布式数据库技术实现自动化事务的一致性保障:结合普惠金融系统业务数据的特点,合理运用数据多维分区策略,并利用分布式数据库技术,在二阶段提交(2PC)基础之上,针对异常故障场景,实现自动化事务的一致性保障。
为了保障数据的一致性,需要维护一个全局唯一的ID来区分并发事务,以及标识产生或变更的数据。这样一个全局唯一的ID,通常需要结合事务发起的时间,并且依赖时间戳加上其他一些标识位来加以实现。SequoiaDB专门设计了一套全分布的逻辑时钟机制,避免了强制所有参与节点从GTM(Global Transaction/Time Manager)中获取唯一ID,同时又能满足分布式存储和处理的要求。
3)分布式数据库跨同城数据中心部署
基于分布式数据库完善的多副本数据同步机制,新一代普惠金融平台既实现了同城双中心部署——支持数据的容灾与高可用性,也实现了应用跨数据中心运行——当主中心出现灾难时,数据零丢失,分布式数据库自动进行容灾切换,应用系统对该操作无感知。图2-7是该省级农信社普惠金融平台分布式数据库应用的双活部署示意图。
图2-7 该省级农信社普惠金融平台分布式数据库应用的双活部署示意图
3.项目创新成果
分布式数据库提供了灵活、弹性、便捷、融合的数据服务能力,除了可应对瞬时爆发式业务量增长,还可与微服务架构相结合,为应用的敏捷迭代开发打下良好基础,帮助金融企业快速推出创新、差异化、跨界的服务和产品。该省级农信社基于此取得了如下成果。
● 分布式架构转型与金融产品国产化:用SequoiaDB替代国外数据库产品,避免核心技术绑定问题,实现对底层代码的完全自主可控。从软件与硬件两个方面、性能和效率两个层面、短期应用的战术最优化和长远发展的战略最优化两个角度,均实现提升。此外,针对异地灾备,通过分布式数据与应用相结合的多活部署策略,应用SequoiaDB产品,为各地农信社和其他金融机构的多活数据中心建设探索出了一条切实可行的道路。
● 分布式环境下端到端的数据一致性:微服务之间的数据一致性用柔性事务保证;微服务内部的自动化事务一致性通过分布式数据库技术来实现;跨数据中心的数据一致性与高可用性问题,用分布式数据库的多活体系来解决。通过在虚拟化云环境中完成微服务框架下分布式系统的多层次数据一致性,进而实现高效的弹性扩展、事务处理的最终一致性、微服务级别的数据保障及多活异地容灾等优良特性,该省级农信社为金融系统的升级与变革提供了强大动力和发展潜力。
● 实现社会效益与经济效益的最大化:通过对行业的深度调研,对互联网融资业务的共性进行提炼,基于弹性多层次混合系统,推出一个强大、稳定的普惠金融平台,集客户账户、产品创新、全周期核算、业务自动化审批、智能风控等于一体。该平台的金融差异化配置、跨界产品整合、服务交互、产品核算等功能,不仅为客户提供了一揽子普惠金融、互联网融资服务,而且为企业互联网金融业务的快速发展打下了坚实的基础。