首页 > 数据库 > 国内数据库 > 商业银行基于容器云的分布式数据库架构设计与创新实践
导读
某商业银行新一代业务金融云建设,以某国有大行新一代业务解决方案为建设蓝本,目标是利用新架构满足业务快速迭代的要求,提供较强的业务处理能力和灵活扩展能力,加快数字化转型和业务创新等,同时满足降本增效要求。 其中,选定 TiDB 分布式数据库集群的上云应用系统合计超过 100 个,涉及核心、金融服务、渠道管理/整合、中间业务、个人贷款、对公贷款、组件服务、公共业务管理、数据分析等多个银行重要业务领域,系统重要等级高,需要具备两地三中心部署、同城双活能力,且同城和异地 RPO、RTO 满足系统对应的高可用和灾备要求。按原私有部署模式(OP),该项目常规需要物理机 300-600 台,考虑客户自身运营规模,系统建设迫切需要建立成本低、使用便捷的 TiDB 云化平台支持服务体系,全面减低 TiDB 部署、测试、运维等成本。
目前业内主流的 OP(私有)TiDB 部署方案,基于独立物理服务器,存在以下问题:
运维管理难度高 :依赖管理员经验、手工命令,无法满足运工作标准化和自动化要求
TiDB +TiDB Operator 适配 K8s 联邦集群,提供金融级高可用云平台数据底座支撑能力;具备同城及两地三中心高可用能力;
基于 TiDB Operator ,构建 TiDB 集群运维管理功能,提供包括部署、扩缩容、备份恢复、参数变更、监控告警等云 TiDB 产品的全生命周期管理;
TiDB 云平台具备在各种物理资源上融合部署能力,大幅节约整体使用成本。
TiDB 是平凯星辰公司自主设计、研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理 的融合型分布式数据库产品,具备水平扩容或者缩容、金融级高可用、实时 HTAP、云原生的分布式数据库、兼容 MySQL 协议和 MySQL 生态等重要特性,适合高可用、强一致要求较高、数据规模较大等各种应用场景。
TiDB Operator 是 K8s 上的 TiDB 集群自动运维系统,提供包括部署、升级、扩缩容、备份恢复、配置变更的 TiDB 全生命周期管理。借助 TiDB Operator,TiDB 可以无缝运行在公有云或自托管的 K8s 集群上。
提供整合、统一接口服务的 TiDB 资源池,可按需供给各类规格的 TiDB 逻辑集群,依靠 K8s 自身服务调度编排能力和 TiDB 产品真正分布式事务能力、在线扩缩容能力,实现多业务隔离,提高资源利用率。
最近几年原生 K8s 技术演进发展迅速,新功能特性层出不穷愈加丰富,从技术可行性评估,容器技术早已具备支持有状态应用的能力,但是 K8s 对数据库等有状态的应用的支持,因数据库应用的特殊性,需进行一定的适配开发,以使数据库容器化的整体架构方案和技术优势和价值达到最优。
在此背景下,基于 K8s+Operator 构筑数据库容器化方案落地过程中,将会面临以下几方面技术难度:
1. K8s 灾备能力: 从近期著 名云厂商多起史诗级故障来看,冗余的 K8s 集群可用性远远大于单一 K8s 集群,需要有效使用多 K8s 集群技术;
2. TiDB 高可用部署: TiDB 数据库需要 保障 K8s 集群下数据一致和高可用;
3. 多业务隔离能力: 需要满足该银行业务体量,支持小库归集、多业务隔离部署和资源隔离能力要求;
4.存储: 容器针对无状态应用的分布式存储,并不适用于数据库应用场景;需要 针对数据库容器,提供一种既满足数据冗余,又能满足 DB IO 性能要求的存储方案;
5.运维便捷性: 原生 K8s 主要面向的是 CI/CD 应用场景,对数据库的运维场景支撑并不完善。方案需要有效 降低运维成本,无缝对接行内现有数据库运维生态体系及工具。
1. K8s 灾备能力
方案示意如下:
如图,K8s 集群采用联邦集群技术,可在单个数据中心部署 3 套 K8s 集群解决 K8s 单集群单点故障;主集群上是一个启用了多集群功能的 K8s 集群,可以使用它提供的控制平面统一管理。成员集群是没有中央控制平面的普通 K8s 集群。集群管理员可通过主集群访问控制平面,管理所有成员集群,例如查看和编辑成员集群上面的资源;单个成员集群只能访问和看到自身资源。
2. TiDB 高可用部署
根据业务重要程度,该商业银行对应用项目有 A/B/C 三种分类,具体如下:
A 类: 账务处理、网银、核心交易接口平台、高等级联机交易等系统;SLA 服务可用性不低于 99.95%;
B 类: 对业务恢复时间要求不高的联机交易系统等;重要等级较高的内部管理系统、内部分析系统等;SLA 服务可用性不低于 99.3%;
C 类: 面向内部人员、内部客户使用的内部系统;全年故障时间不超 24 小时,业务中断时间不超 10 分钟
该部署模式可提供单中心高可用能力;
K8s 兼容集群包含 3 个物理集群;均在生产 IDC;
应用通过负载均衡连接 TiDB 集群;
TiDB server 无状态节点,部署在其中 2 个集群对应节点上;
PD 部署 3 节点,每个集群一个,通过 RAFT 保证 PD 高可用;
TiKV 通过 Raft 协议保持数据的一致性(至少默认三副本),部署 3 节点,每个集群一个;
TiFlash 根据业务需求选用,至少两副本保证高可用;
监控服务(Ngmonior)、TiDB 集中监控服务(TiDB-dashboard)、管理节点(MGT)均单 Pod 部署在一个集群,依靠 K8s 自身机制实现高可用;
执行备份、恢复等任务,根据各集群负载情况动态选择一个负载较小的 cluster 生成 JOB 型 Pod 执行。
重要等级为 A 类的应用项目,可采 用同城双中心+异地灾备部署方案;部分高等级 B 类系统,可采用 同城双中心(不需要提供异地灾备),如下图所示:
该部署模式可提供同城双中心(无 TICDC)和异地灾备高可用能力(部署 TICDC);
TiDB 集群分为 AZ1/AZ2;应用系统也分 AZ 部署,通过不同的负载均衡连接不同 AZ 的 TiDB server;
TiDB server:AZ1 上两集群各部署 1 个;AZ2 上 1 个集群部署 2 个;
PD/TIKV/监控服务/TiDB 集中监控服务/管理/备份&&恢复 Pod 部署同上;
TIKV(默认 3 副本)在 3 个集群上各部署 1 个;
TiFlash 根据业务需求选用,至少两副本保证高可用;AZ1/AZ2 默认各部署一个;
新增 TICDC Pod,负责生产->灾备集群数据同步,可选择部署在目标端或源端。
3. 多业务隔离能力
如上图所示,在云化 TiDB 平台上,运维人员只需要为上线业务选择合适的 Pod 规格和 Pod 个数后,可以一键部署集群,而无需关心 K8s 具体的资源分配、Pod 编排调度细节。
4. 存储
使用开源云原生存储(GlusterFS/CephFS): 该方案过度依赖网络,和数据库服务抢占网络资源。
使用本地存储 LocalPV: 数据冗余保护能力不足,运维较为复杂,但性能高,可满足数据库场景需求。
考虑到 TiDB 产品的存储服务 TiKV 会自动维护多副本(默认为三副本),架构如下:
如上图,TIKV 主要特点如下:
Multi-Raft 架构 - 以 Region 为粒度复制副本;
奇数份数据副本打散分布在存储节点集群;
相同的数据不会在同一个节点上。
因 TIKV 天然支持高可用和自动故障转移,解决了本地存储方案中数据无法冗余的缺点,同时继承该方案能为数据库容器提供足够的磁盘 IO 和吞吐优点,兼顾数据高可用性和存储成本优化,因此经大量验证测试后,选择使用本地存储方案(localPV)来实现 TiDB 云化持久化。
5. 运维便捷
TiDB 云化平台基础架构,围绕 TiDB 服务适配设计定制开发,运维优势体现在:
分钟级部署 TiDB,支持单中心、同城双中心、两地三中心等多种模式;保证应用程序在开发、测试和生产环境中运行一致;
运维全可视化操作,简单直观,有效减少人为运维失误;
无缝对接行内现有容器化 TiDB 集群、TiDB 远程容灾、TiDB 镜像管理平台、TiDB 数据库管理等平台。
基于 K8s+TiDB+TiDB-Operator 构筑的云化 TiDB 平台于 24 年 5 月一次性上线了 100+ 业务应用系统,运行平稳。该项目主要收益如下:
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69994146/viewspace-3056072/ ,如需转载,请注明出处,否则将追究法律责任。