您的浏览器禁用了JavaScript(一种计算机语言,用以实现您与网页的交互),请解除该禁用,或者联系我们。[北京金融科技产业联盟]:2024年金融行业分布式数据库容器化建设需求研究报告 - 发现报告

2024年金融行业分布式数据库容器化建设需求研究报告

AI智能总结
查看更多
2024年金融行业分布式数据库容器化建设需求研究报告

北京金融科技产业联盟2024年10月 版权声明 本报告版权属于北京金融科技产业联盟,并受法律保护。转载、编摘或利用其他方式使用本白皮书文字或观点的,应注明来源。违反上述声明者,将被追究相关法律责任。 编制委员会 主任: 聂丽琴 编委会成员: 吕俊锋罗学平杜志明田永江杨维强汪洋 编写组成员: 李嵩嵩杨旭刘月然朱鹏秦延涛曹伟刘海波吕初伟曹源李建国应珊珊龙恒杨欣孙勇福杨锐陈伟红黄贵赵亮燕征南梁海安骆明顺路新英梁广涛徐雪涛朱洁郎岳樟李保洋 编审: 黄本涛张蕾 参编单位: 北京金融科技产业联盟招商银行股份有限公司中国农业银行股份有限公司杭州云猿生数据有限公司腾讯云计算(北京)有限责任公司金篆信科有限责任公司平安科技(深圳)有限公司华为云计算技术有限公司阿里云计算有限公司上海爱可生信息技术股份有限公司北京百度网讯科技有限公司 目录 一、目标...............................................3 二、技术分析...........................................4 (一)分布式数据库技术...................................4(二)容器技术...........................................8 (一)调度..............................................11(二)变更..............................................12(三)切换..............................................17(四)副本重搭..........................................19(五)备份恢复..........................................21(六)迁移..............................................22(七)监控报警..........................................24(八)数据库访问控制....................................27(九)混沌工程..........................................29(十)智能运维..........................................32(十一)其他............................................34 四、应用需求分析......................................36 (一)一致性校验........................................36(二)容灾..............................................38 五、建设方案..........................................41(一)分层抽象..........................................41(二)管理平台API设计...................................46(三)OPENAPI标准化.....................................49六、展望与计划........................................49 一、目标 随着金融行业数字化转型的不断深入,金融机构对于数据管理提出了更高的要求。在容器技术和数据库生态系统不断发展的背景下,分布式数据库容器化已经成为一种趋势,凭借其灵活性、可扩展性和高可用性,成为金融行业数据管理的重要选择,可为金融行业带来如下收益: 提高自动化程度,分布式数据库容器化能使其在多云、混合云环境中灵活地部署和管理,利用云平台的资源调度和自动化能力,实现分布式数据库的自动扩缩容和高可用性。 提升部署和运维效率,分布式数据库容器化简化了部署和管理过程。通过使用容器镜像,将配置和依赖项打包在一起,实现一致性和可重复性的部署,简化生产环境的运维工作,降低人为错误的风险。 优化资源利用率,传统的分布式数据库部署通常需要专用的服务器和资源,导致资源利用率较低。而分布式数据库容器化允许在同一台服务器上进行高密度的数据库实例部署,通过容器的隔离性和资源限制功能,可以更好地利用服务器资源,提高资源利用率和成本效益。 数据库混合部署,金融应用通常需要使用多种类型的数据库,容器化使得在同一个环境中运行和管理不同类型的数据库变得更加高效、经济,实现不同数据库的混合部署。 保证数据安全与隔离,在多租户或共享环境中,相对于共享 物理机,分布式数据库容器化提供了更好的数据隔离和安全保障。每个数据库实例运行在独立的容器中,可以减少数据泄露和相互干扰的风险。 本文从金融行业视角,对分布式数据库和容器技术进行了研究,结合实践中的真实运维需求和应用需求给出了分布式数据库容器化建设方案,为云化时代金融机构运用容器技术解决云平台和分布式数据库间兼容匹配的问题提供有效参考。 二、技术分析 (一)分布式数据库技术 分布式数据库是一种在多个物理或逻辑位置存储数据的数据库系统。在金融行业,分布式数据库提供了高可用性、数据一致性和弹性扩缩容能力。金融机构可以利用分布式数据库处理大规模交易数据,实现快速查询和实时分析,从而提高决策效率。随着金融科技的发展,分布式数据库在支持复杂金融产品、风险管理和客户服务等方面发挥着越来越重要的作用。分布式数据库的性能,源自其在数据分布、事务处理和架构上的独特之处。 1.数据分布方式。分布式数据库与单机数据库存储在本地磁盘或者共享磁盘的方式不同,采用Sharde-Nothing架构。数据通过多副本保存在不同的数据节点,每个数据节点拥有一部分数据,多个数据节点共同组成完整数据。目前分布式数据库产品的数据分布有两种方式。 指定分片键分布:数据表以指定分片键及分片算法方式,将 整张表的数据打散分布到各个数据节点。常用的分片策略有:哈希分片(hash)、范围分片(range)、列表分片(list)、复制分片(duplicate)、多级分片等。 根据大小默认分布:某些分布式数据产品采用默认分片方式,根据固定大小(如100M)对数据进行物理切割,每个切割单元称为Region,每个Region的内容与数据表无对应关系,一个Region可能包含多个不同数据表中的数据。 2.分布式事务。分布式事务指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于分布式系统的不同节点上,实现的目标是将单机数据库的ACID理论(即保证事务的原子性、一致性、隔离性、持久性),延伸到分布式架构。在分布式 系 统 设 计 中 ,CAP理 论 (Consistency,Availability,Partitiontolerance)指出,一个分布式系统在出现分区故障(Partition)时,无法同时保证数据一致性(Consistency)和可用性(Availability),因此分布式系统设计时通常需要在这三者之间做出权衡。业内常用的分布式事务处理有两种方案:a.两阶段提交(2PC)和三阶段提交(3PC);b.SAGA事务(事务补偿方案),是一种长活事务模型,用于处理分布式事务,通过补偿操作来恢复失败的事务。在设计分布式系统时,选择合适的一致性模型和算法是非常重要的,这直接影响到系统的性能、可靠性和用户体验。对于分布式事务功能上的主要包含如下三个方面: (1)数据一致性:不同于单机数据库的事务只在本机一个节点中完成,分布式数据库的事务需要跨越多个数据节点。事务参与节点数量增加,发生故障的概率随之增加。在故障发生时如何保证事务数据一致性、故障发生后失败的事务如何高效回滚处理,通常需要根据具体的应用场景和业务需求来平衡。 (2)分布式事务性能:由于分布式事务提交时涉及多个节点,与单机数据库事务相比性能有所下降。优化分布式事务性能,是分布式数据库产品的重大挑战。 (3)事务隔离级别:目前大多数分布式数据库产品可以实现的隔离级别为READCOMMIT,少部分产品可支持多种事务隔离级别。若实现单机数据库如Oracle的隔离级别及MVCC多版本控制,在分布式架构下具有较高难度。目前业界的产品均在此功能上不断提升探索,并不断探索在分布式场景中解决读写并发操作带来的一致性问题。 3.架构。分布式数据库技术架构包括管理模块、计算模块、存储模块3部分组成,技术架构如图1所示。 分布式数据库具有高扩展性、高可用性、分布式事务强一致性等特点,并且部分产品具备数据库云化能力,可为客户提供数据库云服务的标准化交付和快速部署,支持多种部署模式等。经过对主流分布式数据库的架构设计分析,总结出以下几点共同特征: (1)线性扩展:分布式数据库软件架构采用分层设计,一般基于Share-Nothing架构,采用集群方式部署,实现各组件的灵活扩展,从而提供高性能的数据库服务。同时结合数据动态重分布和读写分离等技术,实现性能的线性扩展。计算节点、数据节点均可横向线性扩展,满足性能及容量的无限扩展需求。 (2)高可用:支持多地多AZ组网,任何节点不存在单点故障,可以支持多种组网架构,创新研发数据复制技术,针对不同的业务场景灵活配置不同的策略来满足不同的可用性和可靠性要求, 提高系统吞吐量的同时,实现同城RPO为0。满足数据高可靠、服务高可用要求。支持机房级故障自动切换、支持异地带载演练和异地带压演练。 (3)分布式事务强一致性:具备分布式事务一致性,从数据库层面实现了数据的强一致性,对应用透明,无需应用改造,提升应用迁移效率。 (二)容器技术 云容器技术是一种将应用程序及其依赖项打包在轻量级、可移植的容器中的技术,这些容器可以在任何支持容器运行的环境中快速部署和运行。容器技术通过隔离应用程序及其运行环境,提高了应用的可移植性和可扩展性。在云环境中,容器可以轻松地在不同的云服务和数据中心之间迁移,实现资源的最优配置和成本效益。 1.Pod。Pod是K8s的最小工作单元。每个Pod包含一个或多个容器。Pod中的容器会作为一个整体被Master调度到一个Node上运行。K8s引入Pod主要基于如下两个目的: (1)可管理性。有些容器需要紧密联系,Pod提供了比容器更高层次的抽象,将他们封装到一个部署单元中。K8s以Pod为最小单位进行调度、扩展、共享资源、管理生命周期。 (2)通信和资源共享。Pod中的所有容器使用同一个网络namespace,即相同的IP地址和Port空间。他们可以直接用localhost通信,可以共享存储。 2.调度。K8s系统的核心任务是创建客户端请求创建的Pod对象,并确保其以期望的状态运行。创建Pod对象时,调度器为每一个Pod资源挑选合适的节点来运行,因此也被称作Pod调度器。调度过程中,调度器不会修改Pod资源,而是从中读取数据,并根据配置的策略挑选出最适合的节点,而后通过API调用将Pod绑定至挑选出的节点之上以完成调度过程。 k8s内建了适合绝大多数场景Pod资源调度需求的默认调度器,支持同时使用算法基于原生及可定制的工具来选出集群中最适合运行当前Pod资源的一个节点,其核心目标是基于资源可用性将各Pod资源公平地分布于集群节点之上。目前,K8s平台提供的默认调度器也称为“通用调度器”,通过三个步骤完成调度操作:节点预选(Predicate)、节点优先级排序及节点择优。节点预选是基于一系列预选规则对每个节点进行检查,将那些不符合条件的节点过滤掉从而完成节点预选。节点优选是对预选出的节点进行优先级排序,以便选出最适合运行Pod对象的