分布式数据库单元业务应用研究报告 北京金融科技产业联盟2022年12月 版权声明 本报告版权属于北京金融科技产业联盟,并受法律保护。转载、编摘或利用其他方式使用本白皮书文字或观点的,应注明来源。违反上述声明者,将被追究相关法律责任。 编制委员会 主任: 潘润红 编委会成员: 聂丽琴王志刚李晓栋邢磊胡捷 编写组成员: 王莉莉 杜蓉 李萧萧 王鹏冲 李中原 夏文勇 王辉 李晓欢 林海 高孝鑫 张楠 卢道和 胡盼盼 王枫 王栩 杨详合 江智睿 王睿操 苏强 张晓 陆天炜 戴扶 申立军 周日明 明玉琢 苏德财 黄元霞 张积斌 黄小慧 主审: 黄本涛彭卫华 统稿: 张蕾 参编单位: 北京金融科技产业联盟秘书处中国光大银行股份有限公司中国工商银行股份有限公司中国平安银行股份有限公司中国华夏银行股份有限公司中国建设银行股份有限公司北京万里开源有限公司 中兴通讯股份有限公司 深圳前海微众银行股份有限公司北京奥星贝斯科技有限公司 腾讯云计算(北京)有限责任公司成都虚谷伟业科技有限公司 北京百度网讯科技有限公司广州巨杉数据库软件有限公司上海热璞网络有限公司 摘要 在银行业客户体验和数字科技创新双轮驱动推进下,微服务、单元化架构、分布式数据库技术的融合已经成为传统银行基础架构演进的一个重要技术趋势。作为一个新兴的技术架构,微服务结合单元化架构与分布式数据库技术的融合也伴随着众多的难点与挑战,包括但不限于高可靠与容灾、单元拆分以及整体运维体系复杂度的提升。 本报告将整理金融机构分布式数据库在单元化场景部署实施需求以及特性需求,并从单元化拆分、单元与分布式数据库部署对应、单元扩容、高可靠、灰度发布、数据同步、以及运维解决方案等多方面阐述分布式数据库在单元化业务场景下的部署思路,最后提供金融行业典型试点案例,为金融机构在单元化业务应用场景中使用分布式数据库提供参考。 目录 一、研究背景1 (一)单元化概念及架构1 (二)单元类型3 (三)分布式数据库与单元化5 二、场景分析8 (一)单元化场景分析8 (二)分布式数据库分析9 (三)部署难点与要求12 三、应用方案16 (一)单元业务拆分16 (二)业务拆分数据库设计26 (三)数据库部署方案31 (四)数据库运维要求47 四、典型案例55 (一)建设银行试点案例55 (二)平安银行试点案例62 (二)华夏银行试点案例71 (三)微众银行试点案例76 (四)支付宝试点案例86 一、研究背景 (一)单元化概念及架构 1、单元化概念 单元是指一个能完成特定业务操作的自闭环集合,在这个集合中包含了特定业务所需的关键服务,以及分配给这个单元的数据。一个单元是可以独立运行特定业务的最小集合;单元化架构就是把单元作为部署的基本单位,在全栈所有机房中部署若干单元,每个机房里的单元数目不定,任意一个单元都部署了系统所需的特定应用,数据则是全量数据按照某种维度划分后的一部分。 单元是一个缩小版整站,部署了特定业务应用,但他不是全量的数据,因为一个单元只能操作部分数据。以银行账户核心的存贷款服务为例,单元化架构之后,一个单元可以只存储个人存款服务这个特定业务应用的部分客户号相关的数据,但这些客户号所有或绝大部分的个人存款服务都可以在这个单元中完成。 2、单元化架构 单元化架构是从并行计算领域发展而来。在分布式服务设计领域,一个单元(Cell)就是满足某个分区所有业务操作的自包含集合。而一个分区(Shard),则是整体数据集的一个子集,如果你用账号来划分用户,那同样尾号的那部分用户就可以认为是一个分区。单元化就是将一个服务设计改造让其符合单元特征 的过程。 能够单元化的系统,很容易在多机房中扩展,且不受机房建设上限限制,因为可以轻易地把几个单元部署在一个机房,而把另外几个部署在其他机房。如图1所示,通过在业务入口处设置一个流量调配器,可以调整业务流量在单元之间的比例。 图1业务单元化示意图 单元化架构要求系统须具备数据分区能力,数据分区承载了各个单元的业务流量比例。数据分区即是把全局数据按照某一个维度水平划分开来,每个分区的数据内容互不重叠,每个数据节点有自己应用系统、数据库。 从全行系统的角度看,单元化按照技术或者业务等一定方式 将系统拆分到不同的机房里面去,使业务链路尽可能在单机房内完成,其效果是既降低了链路耗时,又实现了多机房多活且为多机房扩展提供基础。 从技术拆分的角度来看,单元可以分成可拆分和不可拆分两类,如账务、存款、贷款、资产交换等绝大多数银行业务是按照人维度可以进行拆分的,如客户、限额等存在多个维度或者非人的维度,因此不可拆分;客户登录可存在身份证号、银行卡号、手机号、邮箱等多个维度。 (二)单元类型 目前业内对于单元的命名方式有多种,例如邮储银行分区单元(DUS)、民生银行分区单元(DUS/UZone)、网商银行分区单元(G/R/CZone)、微众银行标准化部署节点(DCN)、光大银行分区单元(DUS)及其他企业分区单元(SET)。不同的金融机构实际的DUS划分方式可能会有些不同,但基本思想大体一致,本文为了方便论述,统一使用分区单元(DUS)来表述。 图2常见DUS划分示意图 如上图2所示,常见的DUS划分主要如下:1.全局路由单元(G-DUS) 包含网关服务,处理外联系统的服务请求,提供服务路由,将外部请求转发到内部的业务单元的应用服务实例。典型的应用服务为联机网关服务、文件网关服务、外呼等。 2.业务服务单元(B-DUS) 包含多个客户的业务数据以及为此类客户提供服务支持的应用实例,负责完成客户的业务处理。典型的应用服务为联机服务、批量主控服务、批量处理服务、批量转联机服务。 3.序号管理单元(S-DUS) 为全部服务处理单元提供系统服务支持,如账号等序列号生产服务,该单元的特点是在核心系统内以单点方式提供服务。典型的应用服务为全局序列号管理服务。 4.公共服务单元(C-DUS) 为全部业务处理单元提供支撑的应用服务,以及与自动化运维管理平台相对接的相关数据,包括批量调度服务、日志聚合信息、监控数据等。典型的应用服务为分布式批量调度服务。 5.本地资源管理单元(L-DUS) 包括针对单个数据中心内的业务处理单元所提供的公共数据以及该数据的管理服务,包括映射数据、非客户维度的参数(业务、技术参数)以及此类数据的管理服务。典型的应用服务为参数管理服务、服务注册管理服务、映射关系管理服务、配置信息管理服务。 本课题更多关注单元化与分布式数据库的结合,所以后续对于单元拆分方式将聚焦在业务服务单元(B-DUS)的拆分方案。 (三)分布式数据库与单元化 分布式数据库系统通常使用较小的计算机系统,每台计算机可单独放在一个地方,每台计算机中都可能有DBMS的一份完整拷贝副本,或者部分拷贝副本,并具有自己局部的数据库,位于不同地点的许多计算机通过网络互相连接,共同组成一个完整 的、逻辑上集中、物理上分布的大型数据库。 典型通用的分布式数据库架构如图3所示,分为计算层和存储层。计算层包含多个计算节点,存储层包含众多数据节点。计算节点的作用不同分布式数据库略有些差异,本文不展开论述;而作为各个分布式数据库的共性点,数据节点负责存储业务单元数据,数据节点将以多副本数据冗余的方式提供业务数据的高可靠,用于存储一份数据多个副本的数据节点我们称为节点组或数据节点组,本文的后续部分将会多次提及节点组或数据节点组。 图3典型分布式数据库架构示意图 分布式数据库在单元业务下部署有助于保障线上系统日常业务的高效能、高安全、高迭代的平稳运行,同时有助于金融机构、金融企业提升信息化综合能力,此外还有助于提升国产数据库领域的支撑能力。对于金融机构、金融企业完善技术平台、逐步实现基础软件自主可控有重要的现实意义。 单元化架构与分布式数据库技术的融合作为一个新兴的技 术架构,也伴随着众多的难点与挑战,包括但不限于链路延迟、高可靠与容灾、单元拆分以及整体运维体系复杂度的提升,而这些也是本课题需要进一步研究和讨论的。 在银行业客户体验和数字科技创新双轮驱动推进下,传统银行基础架构加速向微服务与单元化转型,向支撑更加开放与灵活的业务架构演进。同时随着国家基础软件自主可控浪潮的推进,分布式数据库技术也越来越多地应用在了银行业各类重要/核心系统中。微服务、单元化架构与分布式数据库技术的融合成为一个重要的技术趋势。 为此,北京金融科技产业联盟在分布式数据库专委会内开展了单元业务下应用场景的调研,并组织编写了《分布式数据库单元业务应用场景研究报告》,为各金融机构与分布式数据库厂商提供参考。 二、场景分析 (一)单元化场景分析 1.应用需求简述 对本课题相关参与单位反馈的调研结果进行分析研究,发现单元化架构与分布式数据库技术融合的技术路线已作为主要IT基础架构在部分金融机构中进行试点或落地;同时有大量金融机构正在调研中,并且将单元化和分布式数据库的结合作为重要的技术选型架构方向之一;整理金融机构分布式数据库在单元化业务应用场景部署实施需求及特性需求,对于各金融机构与分布式数据库厂商均具有参考价值。 本报告分析的分布式数据库在单元业务中的应用场景需求汇总如下表1所示: 表1分布式数据库在单元业务场景中应用技术需求汇总 编号 需求 1 典型单元化架构业务拆分方式 2 单元与分布式数据库分片的部署对应关系 3 单元调整过程中业务服务单元与分布式数据库配合的典型实施方案,包括横向与纵向扩容、单元拆分与合并。 4 进行单位化拆分后,分布式数据库的本地高可靠、同城双活或多活、异地灾备等部署的典型方案,总结分布式数据库多副本的高可靠性技术。 5 单元化架构下业务的灰度发布过程与分布式数据库的灰度发布过程 6 单元化架构下分布式数据库对外提供数据同步汇总的典型技术方案 7 研究整理单元化架构下分布式数据库应用的典型运维解决方案,包含该场景下全链路性能检测、备份恢复等技术方案。 2.单元化场景应用痛点 本课题在实际调研过程中,针对国内多家银行、金融机构的应用情况总结得到在生产应用中需要采用单元化方式解决的痛点有: 跨异地跨机房多活容灾。类似两地三中心、三地五中心部署 架构,通过架构单元化改造实现业务全局的异地多活。 业务地域拆分与负载均衡。通过单元化架构、将业务按照地域进行单元拆分、实现有效的负载拆分、多地多活、业务高可靠 与负载均衡。 隔离故障提升系统整体稳定性。单元化本身就有一定的隔离性,这样在单一业务或系统出现故障时不会影响其他的业务、系 统或数据,最小范围的系统风险。同时多个或者所有单元同时出现故障的可能性大大降低,另外也减少了故障的排查、恢复时间。 通过灵活的横向扩展能力满足业务发展要求。针对现有业 务,原有系统的在性能、扩展性、可用性、安全性等方面的问题,通过单元化的重构改造进行改进,以实现高性能、高可用、高安全、高可扩展的目标。 (二)分布式数据库分析 1.应用场景 分布式数据库是为单元化业务改造提供重要支撑的核心技 术和产品,本文针对“分布式单元化场景在银行内部是否需要”、“分布式单元化场景在银行内部是否有场景”、“分布式单元化场景是否是银行关心或迫切需要改进的问题”等进行了调研。经过与多家银行、金融机构沟通,目前银行、金融机构采用或有意向在单元化业务中下采用分布式数据库的比较有代表性的应用场景包括:联机交易、批量处理、前置系统和客户服务系统这四个场景: 联机交易是系统对外直接提供的交易,该类交易具有以下特 征: 事务性—分布式强一致读写; 实时性—交易有生命周期,并有超时机制等,调用方需实时 等待被调方的反馈,成功或失败皆有反馈; 并发性—同一类甚至同一个交易可同时被多个线程调用,相互间有锁处理机制。可将同一类或者同一个交易类型进行单元化处理,将其整个流程封装成一个闭环单元,供多个线程调用,保 证单元之间相互隔离。 批量处理时该交易相关的参数、系统状态已经锁定,系统需要进行的操作具有统一性,使用相同的规则处理大量数据