技术专栏|长亮科技分布式定位服务的探索与实践
金融科技
2023.03.01

近年来,金融行业因庞大复杂的业务场景和爆炸式增长的业务发展需求,导致对基础架构的扩展能力、容灾能力、灰度能力的要求也越来越高。分布式单元化架构恰好同时满足金融企业的多种需求,通过架构进行系统建设升级、增强整体能力。可要想一直保持单元化架构的平稳运行,就需要具备一个不可或缺的组件——分布式定位服务,它是实现单元化架构的基本运行保障,可覆盖多种业务场景,降低业务整体复杂度。


长亮科技基于多年在银行核心领域先进技术经验的积累,不断沉淀和强化出一套分布式定位服务组件,让我们一起看看,长亮科技在这方面的经验与见解。


作者

Jonder.Wong 后端架构师


拥有14年后端开发与从业经验,负责数据处理与单元化组件的探索与设计工作。


扫清认知迷雾

了解分布式定位服务


在介绍分布式定位服务之前,我们先介绍下单元化架构的概念,单元是指一个能完成某一类业务操作(如个人存款业务)的自包含集合,在这个集合中包含了业务所需的服务,以及分配给这个单元的客户数据。单元作为部署的基本单位,通常会在在多个机房中容灾部署,每个机房内单元数目不固定,任一单元均部署系统所需的全部应用,数据则是全量数据按照某种维度划分后的一部分。



通过前文对单元的定义和特性描述中,可以推导出单元化架构要求系统必须具备的一项能力——数据分区;即将全局数据按照某一个维度水平划分开来,每个分区的数据内容互不重叠。但仅把数据进行分区还远远不够,单元化的另外一个必要条件是,所有业务数据分区所用的拆分维度和拆分规则都必须一样。


而分布式定位服务则是实现上述目标的关键组件,其主要包含以下三大功能:

对分区的维度数据进行统一的管理

提供统一的拆分维度和拆分规则

为系统提供分区信息的查询功能


小组件,大作用

单元化架构的消息“集散中心”


作为单元化架构的核心组件,分布式定位服务管理着单元化的规则,包括数据如何拆分、单元个数的划分、数据落在哪个单元里等。后期运维人员在完成规则的配置后,所有使用分布式定位服务的应用将会即时收到通知并进行刷新。


从整体上看,组件分为客户端和服务端两大模块:


客户端SDK:客户端主要封装服务端的访问接口,供其他系统进行集成。同时客户端还对单元化的规则做了监听,确保在规则发生变更后能及时进行刷新。

服务端:服务端对映射要素进行统一的管理,并提供查询、新增等接口。同时因为需要管理大量映射数据,系统在部署时使用了分库分表功能。


那么整个组件的调用流程如下所示:



1.网关收到请求或单元内系统发起外调时,传入路由类型和路由值,通过sdk发送到分布式定位服务;

2.分布式定位服务查询之后返回对应的客户号、分片号、单元号信息给客户端;

3.客户端收到响应信息后,再由服务调用组件根据单元号调用相应业务单元。


场景为王

让技术回归服务本质


场景一


正常路由和开户场景


在普通场景下,网关收到交易后从分布式定位服务中查询到该笔交易所属的单元,然后再由服务调用组件将交易转发到具体的单元上。



在开户场景下,由于客户号还未生成,系统提供了“预分配”功能,按照规则分配一个业务单元,并在开户完成后将对应的数据注册到系统中。



场景二


企业级单元化管理


系统在设计时将数据分片规则与单元的管理规则进行了拆分,支持企业级共享一套映射数据,实现企业级分布式定位能力。



场景三


高可用


在金融场景下,每笔交易都可能涉及资金的变动,交易的成功率显得尤为重要。为满足此需求,系统进行了如下设计:


由客户端提供“读请求”的故障重试,整体提高交易成功率。



客户端中提供了写请求的消息补偿,在注册时如果发生异常,则通过发送消息的方式实现最终的数据一致性。



将金融业带入高质量发展曲线的是金融产品、服务技术和洞察能力背后的“价值”。长亮科技作为金融行业的领先企业,很早就开始对单元化进行深入探索,不断帮助银行等金融机构实现系统的单元化建设与改造,积累了丰富的经验。而分布式定位服务也在这些实践中不断的进行更新迭代,功能与性能都得到了锤炼。


结 语

未来,长亮科技将继续以创新为本色、用技术为抓手,不断夯实各类产品及服务的创新能力,通过新技术、新思路赋能金融业业务创新与系统升级,高效支撑金融业的全面发展。


让中国金融科技 具有世界影响力
长亮科技更懂如何为您的数字化转型赋能