分享

金融业关键基础软件砥砺前行

 zjshzq 2020-08-09

主持人、执笔: 本刊记者 韩维蜜

“数字基建”时代已来,将带来真正的产业新生态,是“数字中国”的坚实基础。在这样的时代背景下, 作为承载金融业务运行的关键基础软件备受关注。一直以来,数据库、操作系统这两大领域都是金融行业技 术攻关的重点与难点。如何突破技术壁垒,选择适合自身 IT 架构及业务的核心数据库?负责掌控整体系统安 全的操作系统又取得了哪些新进展?

本期“对话”邀请了八位嘉宾就“数字基建时代,金融业关键基础软件砥砺前行”的话题,围绕分布式数据库及操作系统的痛点难点及解决方案发表见解、分享实践经验。

对话嘉宾

中国科学院软件研究所

所长    赵琛

中国农业银行研发中心

副总工程师    蔡仕志

民生科技公司

副总经理  蔡膺红

华夏银行信息科技部

基础技术研究室负责人    胡捷

昆仑银行信息技术部

副总经理    张士晔

华泰证券数据与计算基础平台

团队负责人    管文琦

麒麟软件有限公司

副总裁    李震宁

蚂蚁金服 OceanBase

商业化资深总监    韩鸿源

关键基础软件升级改造的意义

主持人

感谢大家做客本期“对话”。当基础软件遇到“新基建”,打造核心技术硬实力成为关键,对于金融行业而言,关键基础软件的改造升级,有何意义?

胡捷

数据库作为IT架构中重要的基础软件之一,在IT基础架构建设中的地位不断提升。首先,分布式数据库在性能上有很大优势,可以提供高并发和弹性扩展的能力。其次,能够实现关键技术的自主掌控。第三,可以降低系统搭建成本,使用x86或ARM服务器即可满足需求。

赵琛

近期,中央将“新基建”提高升到了国家战略高度,关键基础软件及相关平台是“新基建”的重点领域,我们要加强对关键基础软件的集中攻关,筑牢“地基”,释放“新基建”红利,促进新业态、新产业、新服务的发展。

管文琦

金融行业互联网业务的爆发式增长,对高并发请求以及海量数据高性能存取提出了更高的要求。基于集中式架构的传统关系型数据库受限于单机处理能力,成了业务快速发展的瓶颈。部署分布式数据库,可以让系统架构具备良好的可扩展性,提高业务并发处理能力,快速适应不断上涨的市场行情。

李震宁

近年来利用基础软件平台漏洞为攻击手段,对关键基础信息领域设施进行渗透攻击,造成经济社会领域损害事件屡屡发生。操作系统作为基础软件的基石,是整体系统安全底座,把这样的核心技术掌握在我们自己手里非常有必要。

👆滑动查看更多

分布式数据库面临的挑战

主持人

首先我们先从分布式数据库谈起,金融行业的分布式转型势在必行,但部署一个适合机构应用特点的分布式数据库非常具有挑战性。那么,分布式数据库的部署需要面临哪些挑战?最大的挑战是什么?

蔡仕志

分布式数据库具有“物理分布、逻辑统一”的特点,所有的逻辑功能组件分布在多个物理节点上,可以视为一种实现传统单机数据库功能的分布式系统。因此,分布式数据库既要面临分布式系统的很多技术挑战,也要面临数据库在数据可靠性、一致性等要求,以及在分布式事务处理、节点故障处理、部署和运维复杂性、系统鲁棒性(健壮性)、系统故障定位等方面的挑战。

蔡膺红

分布式数据库的部署在“设计阶段的技术选型、数据的垂直和数据水平拆分改造、数据库运维”都面临着挑战。其中,线上数据库运维面临的挑战最大。选择分布式虽然在架构上拥有了横向扩展的能力,但同时运维节点数量也会出现爆发式增长,仍然延用传统人工运维方式是不现实的。该如何实现分布式数据库众多节点的有效管理?批量部署数据节点、智能化展示故障链条、精细化监控、性能及容量的趋势分析和预测、故障发现、故障分析决策、数据备份和恢复、故障切换等能力都是我们需要面临和解决的。

胡捷

我认为,部署分布式数据库最大的挑战还是“成熟度”的问题。分布式数据库起步较晚,版本处于不断迭代中,技术也在不断完善,成熟的案例少;分布式数据库产品的可持续性、厂商支持力度不可预知。其次,生态尚未建立。与其他产品兼容性不高,整体从业人员、周边工具、资料相对不足,对于开发及运维人员有较高的学习成本。第三,技术难点多。尤其是对于银行,需要保证金融级别的数据安全,保证数据一致性、系统高可用性

👆滑动查看更多

分布式数据库路径规划

主持人

分布式数据库从功能开发到架构设计,需要做哪些准备工作?

蔡仕志

农行分布式数据库选型经历了长时间的论证和测试,主要以技术的深度研究和性能的充分测试为主。在充分调研市场产品的基础上,形成了一套测试方法论和相对成熟的测试案例,包括基础功能、分布式特性、高可用、性能、系统监控、成熟度等6大方面67个测试项,自研了一套自动化测试程序,并以核心系统关键交易作为原型进行了充分测试,帮助厂商发现了多个重要产品缺陷,这也充分说明了整个测试理论和工具的可用性。

目前分布式数据库的产品还在快速发展和不断成熟的过程中,分布式数据库的选择需要从技术生态、发展趋势、业界案例、产品成熟度等多角度进行综合考量,技术只是其中的一个重要因素。

张士晔

数据库承载了银行账务、客户、产品、交易、财务等核心数据资产,数据库的高效、稳定、安全运行至关重要。在进行分布式数据库选型时,除了考虑数据一致性、稳定性、横向扩展性、安全性,还要充分考虑产品成熟度、产品生态圈的完备性、技术服务支持的易获得性等因素。昆仑银行结合自身实际,按照国家、监管层面的相关要求,在实施路线上,采取了先在内部场景、数据条线进行应用,积累技术、人才等储备,再分步骤在面向客户服务的交易场景进行应用的路线图。2018年以来,我们先后完成了大数据平台、数据仓库升级换代等工作,达成了分布式架构部署、软硬件分离、节点可按需扩充、性能大幅提升、成本有效控制等技术目标,为后续数据中台建设打好基础。

管文琦

首先,需要了解当前业务的痛点是什么,是数据库无法支撑业务快速增长的访问量?还是扩容太痛苦,每次扩容都得停机几小时?其次还需要了解业务系统大致的逻辑,以及对数据一致性、高可用及容灾等级的要求等。最后,还需要了解企业的硬件环境。这些问题决定了分布式数据库所需具备的功能以及部署架构。尽量选择商业模式相对成熟、落地场景多、在架构上有前瞻性的产品。

蔡膺红

现阶段,业内对分布式数据库没有统一的标准,实现方式多种多样,行业规范也相对模糊,有基于传统数据库实现的分布式数据库集群,也有颠覆传统数据库的新一代架构设计下的数据库产品。目前我们更倾向于基于传统数据库实现的分布式数据库集群,其原因也是自身拥有多年金融行业传统数据库的运维经验,这些经验是我们在设计故障切换时重要的理论依据。

基于传统开源数据库实现的分布式数据库在架构上可以大体分为两层:路由计算层和存储层。其中存储层是使用了传统数据库的计算存储能力。由于传统数据库有较为完善的数据复本复制及故障修复的能力,这也减少了分布式数据库集群对数据复本复制问题的关注。路由计算层需要涉及语法解析器、语义分析器、查询重写器、查询优化器、全局事务协调器等功能模块。这一层在物理架构上的展现形式也多种多样,有独立部署的代理形式,也有附属到应用的SDK形式。

分布式数据库集群的整体架构设计上要考虑全面的运管体系,这其中就包含了监控、运维、报警等功能的管控端。全面的运管体系才能支撑起分布式数据库的线上运行。

韩鸿源

数据库的分布式化会对已有业务系统的设计产生很大影响。对于分布式架构方面的考虑,需要在项目开始阶段就纳入设计范畴。分布式数据库作为整体分布式架构的重要技术支撑能力,在“分”和“统”的有机结合方面需要给业务系统足够的灵活性。将“尽量减少分布式部署对于应用的侵入性”作为一个主要考虑因素和设计目标纳入分布式数据库的设计之中,允许以集中式的接口方式使用底层分布式能力,同时也要结合数据库的分布式进行充分的架构设计和优化细粒度的控制能力。

👆滑动查看更多

主持人

结合所在机构的情况,谈谈整个建设历程是怎样的,历经了哪些阶段?

蔡膺红

民生银行在整个分布式数据库的研发过程中,大致经历了四个阶段。首先是核心功能的实现阶段。技术选型确定后,研发团队借鉴了开源分布式数据库,同时结合自身传统金融行业的特点,研发了更贴合传统金融场景的分布式数据库。随后,我们进入了应用改造验证阶段,这是一个慢长且颇具挑战的过程,也是应用与分布式数据库相互磨合的过程。我们先从边缘应用着手,从边缘业务到核心业务,不断地验证使数据库的核心功能越发完善。随后为减轻分布式数据库对运维工作的影响,我们又快速进入到了分布式数据治理及运管体系的建设中,体系建设的完成也减少了线上运维成本。随着分布式数据库技术的不断成熟,数据库集群的架构也在发生着变化,在分布式数据库研发的道路上,只有不断地探索前行才能满足未来复杂多变的金融场景需求。

胡捷

主要经历产品调研、POC测试、产品选型、产品试用(包含人才培养及技术积累、结合生产业务类型进行改造、解决实际问题、完善技术架构、制定规范等),及逐步推广等阶段。改造过程中主要面对开发和运维人员。首先需要让开发人员了解分布式数据库原理、使用方法、语法特性等,熟悉开发规范,在测试环境做好技术改造和测试;其次对于运维人员需要让其了解数据库原理、部署、备份、运维管理、高可用切换等相关知识。

👆滑动查看更多

主持人

传统数据库如果要改造成分布式数据库,存在哪些技术难点?(比如:数据的一致性如何保障?如何解决高可用与主备数据一致的矛盾?)

管文琦

首先,不少分布式数据库对join查询的优化算法还不够好,导致执行效率不如单机数据库,需要大量调优或者改造。其次,分布式事务的数据一致性保障要比单机事务复杂很多,经典的两阶段提交协议并不能完全避免出现“indoubt transaction”。当出现时,数据库需要具备处理的手段,否则将难以保证数据一致性。第三,市面上的分布式数据库在保证高可用和多副本数据一致性方面做得还不错,但是在同城和异地跨机房容灾上,对场景设计的灵活性和全面性都有所欠缺。

蔡膺红

为解决数据一致性问题,我们设计了全局事务模块,在整个分布式数据库体系中充当事务的协调者,内部的实现有基于两阶段的事务模型,也有基于最终一致性的事务模型。由于分布式事务模型本身也无法满足所有业务场景,所以我们还是尽量让应用去解决因跨多数据节点访问带来的一致性问题。

👆滑动查看更多

主持人

分布式数据库改造过程中有哪些经验可以分享?(比如:提高数据的一致性采用哪些措施?)

张士晔

分布式数据库改造的目的是更好地支持应用程序运行,新数据库的效能最终需通过应用程序对外体现。因此应用程序和新的数据库如何有机结合是需要考虑的重点之一。我行在数据仓库换代改造时,首先全面分析了数据仓库应用对数据库的诉求。其次充分分析了新旧数据库的差异。除了采用工具对应用程序批量进行语法、命令、字符等替换外,更借此时机进行专家人工作业梳理,保证业务处理逻辑准确,调优作业处理性能。为保证数据可靠,在确保迁移质量、充分测试之外,安排了三个多月的生产环境下新旧数据库并行运行、交叉比对,安排各种关键时点、各层级、各维度数据一致性检查和异常数据处理比对。相关人员加深对新数据库的使用掌握,确保万无一失后,再以新数据库为准对外提供服务。

管文琦

首先,单机能够承载的数据量和并发请求不要上分布式数据库,分布式数据库更加适合于单机无法支撑的高并发请求,以及海量数据的实时存取。其次尽量选择跟现有数据库兼容性比较高的分布式数据库产品。第三,数据迁移、数据同步、容灾备份方案、性能分析、运维监控等周边工具一定要相对完善,否则日常运维比较困难。

蔡仕志

区别于传统数据库,应用系统需充分理解分布式数据库的数据分布方式,并根据自身业务系统进行良好的设计,否则会对系统性能造成重要影响。比如,在进行核心业务原型测试时,按照省号和账号分别进行分布,在进行批量结息时处理时间差一倍。也就是尽量避免分布式事务,尽量通过合理的数据分布设计,在相同节点内完成本地事务,即便存在分布式事务,占比也要尽量较低。

👆滑动查看更多

主持人

在实施效果方面,分布式数据库实现了什么效果?交易的处理能力怎样?响应量级是否还有提升空间?

胡捷

数据库分布部署后,解决了磁盘、网络、CPU等性能瓶颈,能够支撑如“双11”等高并发的业务需求,以往的限流措施可以大幅放宽或逐步取消。以某系统为例:日均交易量1500万笔,TPS约1200笔,QPS约3000笔,目前运行稳定,性能良好,能够承担更大的业务高峰压力。

蔡膺红

从使用方面看,应用开发基本与操作传统数据库无异。大数据量的应用也不再依赖传统商用数据库,设计上帮助应用增加了吞吐能力,并提供了横向扩展的能力,使数据与多活架构更贴合。在我们的核心系统性能压测环境上,基于4个物理分片,可以达到数万以上QPS,并且在水平横向扩展测试中,表现出很好的线下扩展性。由于整个设计上无单点,理论上没有上限。

韩鸿源

透明可扩展的分布式数据库是数据库的发展方向,可以实现自动高可用,水平扩展处理能力,在传统数据库难以解决的方向取得突破,提升对业务系统的支撑能力。蚂蚁金服的主要业务系统完全基于Ocean Base构建,已经实现了连续多年平滑支撑每年多种促销活动和业务高峰。2019年双11支持了业务峰值超过每秒30万笔支付,每秒执行SQL超过6100万,从系统设计上分析,没有制约系统能力进一步提升的限制。

👆滑动查看更多

部署分布式数据库的重要经验

主持人

部署分布式数据库,需要避免哪些坑?

蔡仕志

一是产品需具备完善的自动化安装部署能力,否则容易出现参数修改过程因手工执行造成的配置遗漏,运维监控等操作在缺少完善的集中监控时也会非常痛苦。二是异常场景下的高可用能力,有可能因产品设计而考虑不周。

蔡膺红

运维工作需要考虑业务场景,在改造的初期就要不断地了解业务的数据信息,获取未来的增长预期,这样才能设计好分布式数据库的性能和容量规划,与业务开发人员一道,尽最大努力消除彼此理解的偏差,避免实际生产过程中因为分片维度不合理导致水平扩容的频繁、负载的倾斜、数据的倾斜和大量跨节点的操作情况的发生。

管文琦

首先,基于乐观锁的事务模型不一定比悲观锁事务模型性能好,对于事务冲突比较多的场景,前者反而性能更差。其次,严格控制业务系统对join查询的使用,Oracle上跑得还不错的join查询在分布式数据库上可能会很差。第三,两阶段提交并不能完全保证分布式事务的数据一致性,一定要详细了解是否可以规避“in-doubt transaction”,如果出现了该怎么办。第四,分布式数据库的备份恢复方案比单机数据库复杂很多,一定要清楚所选择的产品能做到什么程度及实现的原理。

👆滑动查看更多

主持人

从运维的角度看,分布式数据库设计时要考虑哪些方面?除了分布式数据库的高可用、负载均衡设计,传统运维方案中的网络、存储、监控告警、备份恢复等应该如何规划?

蔡膺红

设备运维方面要考虑如何减少运维工作;应用运维方面分布式数据库要拥有链路追踪能力。这些都是在设计阶段应该要考虑的。

分布式数据库运维在网络方面,为了保障交易的响应时间,主数据节点与同城复本间对网络要求较高,搭建专属光纤是常见的解决方案。过半数的复本复制策略也避免了因网络抖动导致的复制中断。可用性方面,要充分利用分布式数据库自身数据复本的特点,增加数据库自身的可用性。不会因为一个或一组数据存储节点的故障影响分布式数据库的整体可用性。

韩鸿源

目前的分布式数据库由于内部数据交互的原因,对网络要求会高于传统集中式数据库,相当于把传统集中式数据库内部系统到存储访问的部分功能提升到了服务器之间。所以一般情况下,与目前的云计算趋势一致,存储会发展成软件定义的存储,传统意义上的磁盘阵列存储不会继续是系统的组成部分,比较理想的模式是可以和云存储结合实现备份恢复等数据保护功能。虽然有了多数据副本和自动高可用处理,但是监控告警仍然是不可或缺的部分。一般分布式数据库都会提供自身的管理配套措施,底层的硬件监控报警仍然需要进行管理。

👆滑动查看更多

主持人

分布式数据库的管理与传统数据库的管理有所不同,如何做好分布式数据库的管理?

蔡仕志

分布式数据库节点多,要求具备完善的运维平台,实现多个数据节点的集中视图,统一管理。由于通用商业x86服务器的故障率问题、组件多服务器分散部署,数据库需要具备一定的故障自愈能力、整体运维视图能力。同时配套友好的管理工具。

胡捷

一是要有工具支持。分布式数据库包含节点较多,存在主备节点间数据同步问题、多个分片节点数据备份一致的问题;另外运维管理及故障排查均较为困难,因此必须自研或采购一套运维管理平台来实现自动化的监控报警及管控。二是要培养人才。相较传统数据库,分布式数据库人才很少,而分布式数据库成熟度及稳定性较低,不能过于依赖厂商,需要大力培养自己的人才队伍,提高对分布式数据库的掌控能力。

👆滑动查看更多

加速推动“操作系统”的崛起

主持人

在关键基础软件中,除了数据库升级改造难度大,操作系统的改造难点也非常大。接下来,我们探讨一下“操作系统”的开发及推广难点到底在哪?

赵琛

操作系统在软硬件生态中具有承上启下的地位,是掌控软硬件生态的关键,是关键的基础软件。研制操作系统需要跨越三个门槛:技术门槛、供应链门槛和生态门槛。技术门槛:需要通过核心技术的突破,掌握先进的内核和编译器及工具链;供应链门槛:通过克服核心软件的许可/质量等供应保障,建立可靠的软件供应链;生态门槛:通过南北向生态建设,形成软硬件联盟,建立稳固可控的软硬件生态。

李震宁

我认为核心问题在于市场。一方面是用户的使用习惯性问题,另一方面是缺乏上下游生态。在金融领域,操作系统要进入市场,还要获得一些银行保险客户重点领域的实际应用,才能打消客户顾虑。同时,对于每一个金融领域客户,操作系统的应用,都需要厂商和客户相互信任,进行较长时间的适配、联调、安全和压力测试,才能最终进入实际应用市场。

麒麟软件作为专业化的操作系统企业,拥有“中标麒麟”“银河麒麟”两大产品品牌。我们既面向通用领域打造安全创新操作系统和相应解决方案,又面向国防专用领域打造高安全高可靠操作系统和解决方案,现已形成了服务器操作系统、桌面操作系统、嵌入式操作系统、麒麟云等产品。

👆滑动查看更多

主持人

如何去攻克这些难题?

赵琛

开源技术的发展在一定程度上降低了技术门槛,或者说给后来者缩短了跨越技术门槛的时间周期。经过过去几十年的发展积累,当前比较急迫的难题是建设可靠的开源软件供应链,奠定构建一个可大规模使用的操作系统的基础,即面向核心产品和设备,解决软件包的知识产权隐患,确保软件包来源可靠并能持续维护,提供严格质量保证。目前软件所在科学院的立项支持下启动了开源软件供应链“点亮计划”,我们将联合各大开源社区及相关单位,针对重要开源软件的开发与维护提供相关项目,协同解决关键开源软件面临的许可、质量、维护和技术支持等问题,通过开源软件供应链建设构建可控的生态底座,为建立稳固的软硬件生态提供支撑。

李震宁

我们应该建立成熟的生态圈,即操作系统、中间件和数据库不是单独作为产品,而是作为整体解决方案。基础软件企业在这方面相对薄弱,应强化产业链的横向和纵向联合,从解决用户IT系统的实际问题入手,以实际应用带动产业链配套发展。此外基础软件企业在技术方面要以博大的胸怀去参与全球技术的开源盛宴,一方面要积极引进、消化和吸收国外先进技术,另一方面要加大投入,参与到技术社区的贡献和回馈中去。

👆滑动查看更多

未来期许

主持人

非常感谢大家的倾心分享。最后请各位谈谈未来对分布式数据库和操作系统有哪些期许?

蔡仕志

在分布式数据库方面,中国有足够大的场景和规模,希望在金融业相关业务不断的验证试用中,产品可以得到快速完善和发展,具备大规模应用的商业成熟度。在操作系统方面,在服务端,希望生态圈得到更好更完善的发展,向下兼容硬件,向上兼容软件,操作系统、硬件、软件三方做好相互兼容认证。在桌面端,操作系统可以尽快完善与各种硬件的兼容性、用户操作的易用性、界面操作的稳定性。在用户习惯上,对照Windows和Mac风格,满足研发人员程序开发和日常办公的需求。

蔡膺红

未来的分布式数据库肯定是要摆脱传统数据库的影响,应该是类似于Spanner理论体系的实现。并且分布式数据库会朝着云端化发展,未来也必将跑在云端,运维人员也将会从大规模数据库集群的管理工作中全面解脱出来,所有的部署、故障恢复及高可用都将是高度自动化的。

胡捷

银行业推进分布式数据库和操作系统,需要厂商和银行共同努力,虽然任重而道远,但只有大家目标一致,共同推动,实现《金融科技(FinTech)发展规划(2019—2021年)》提出的“加快扭转关键核心技术和产品受制于人的局面”可期。

李震宁

现在多个金融客户已经开始大规模应用麒麟操作系统,部门应用已经进入核心领域,并且稳定提供服务多年。我们有充分的信心,通过自主创新,打造金融行业生态体系,实现金融领域的高质量发展。

韩鸿源

单一集中式系统难以支持业务的持续发展,分布式业务系统和分布式基础设施是必然的发展方向。分布式数据库作为企业级业务系统的基础支撑能力,未来必然会发挥重要作用。

👆滑动查看更多

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多