华为云数据库首席专家谈分布式数据应用挑战和发展建议
Posted 华为云开发者社区
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了华为云数据库首席专家谈分布式数据应用挑战和发展建议相关的知识,希望对你有一定的参考价值。
摘要:本文分析了分布式数据库发展情况、分布式数据库应用的主要问题,从行业应用的角度给出了分布式数据库发展的建议。
本文分享自华为云社区《数字化转型下我国分布式数据库应用挑战及发展建议》,作者:数据库领域科学家、华为云数据库GaussDB首席专家 冯柯。
当前,金融等重点行业都在进行数字化转型,而分布式数据库作为数据承载工具,为数字化转型提供了有力的支撑。分布式数据库近年来发展迅猛,在产品成熟度上有了很大提升,但在行业应用和生态建设上仍有很多挑战。本文分析了分布式数据库发展情况、分布式数据库应用的主要问题,从行业应用的角度给出了分布式数据库发展的建议。
一、发展情况
过去三十年,以金融业为代表的核心信息系统架构依托IOE(即IBM、Oracle、EMC)技术,构建了一套集中、专用、封闭的稳态技术体系。但是,随着互联网及云化时代的到来,企业业务架构产生巨大变化,以银行为代表的金融业需加速构建敏态体系,推动底层数据库的分布式改造和互联网金融业务创新。分布式数据库具有满足行业关键应用的高扩展性、高性能、高可用性及软硬件解耦等特性,是金融等重点行业信息系统数字化转型的基石。
(一)产品成熟度提升
随着分布式数据库在金融等重点行业的不断应用,产品成熟度得到很大提升。一是新技术的不断发展使得分布式数据库在自身固有的优势领域,如扩展性、高可用等方面进一步强化,已有多个应用在重点行业核心业务中落地。二是国产分布式数据库的性能已经实现了与其他商业数据库持平甚至超越,这在多个大型企业机构产品准入测试及业内国际基准测试(如在线交易场景TPCC、在线分析场景TPCH等)中得到充分证明,可对行业核心业务起到重要的支撑作用。三是更多厂商开始提供对主流国产分布式数据库的功能支持,产品的兼容性取得显著进展。管理控制软件、迁移工具等配套设施逐渐完善,极大地降低了数据库的使用门槛和迁移成本。
(二)生态逐步完善
一是加快推动分布式数据库在重点行业落地,主流分布式数据库厂商纷纷与众多大型银行、企业等开展联合创新活动,取得了许多突破性的成果。以某厂商的分布式数据库为例,在与大型商业银行的联创过程中,已完成10个以上业务系统的分布式数据库替换,覆盖银行A类到C类全场景业务。二是通过一站式的迁移解决方案,实现以较小的业务改造工作量从传统数据库向分布式数据库转型,迁移成本相对较低。而且使用分布式数据库后,业务系统运行稳定,可靠性和扩展性有所增强,从各项指标看,已基本具备承接Oracle及DB2大机下移的能力。三是分布式数据库相关的行业标准和评价体系逐步健全,对产品发展起到较强的规范引领作用。
(三)总体发展情况向好
当前国产分布式数据库已经渡过了“能用”阶段,正在迈向“好用、易用”阶段。横向来看,我国分布式数据库的发展基本与国际同步,tpcc、sysbench等性能指标和RTO、RPO等可靠性指标甚至具有优势,在应用领域取得些许领先。纵向来看,以金融业为例,分布式数据库应用取得较大进展,不管是在互联网新核心业务,还是传统核心业务中,分布式数据库行业应用落地数量大幅增加,有逐步替代集中式数据库的趋势。
二、面临的主要问题
(一)主体改造意愿不强,行业实践尚不充分
一方面,原有数据库系统改造为分布式数据库,对用户及应用单位提出了较高的要求。改造所面临的成本问题,以及改造完成后分布式运维实施的复杂性,使得部分金融机构对于全面应用分布式还存在有一定的疑虑,主动改造意愿不强。另一方面,分布式数据库在行业典型应用场景中的落地仍处于摸索阶段。由于部分项目中存在一定的需求定制化,应用解决方案与产品的边界不够清晰,产品的规模化复制能力仍有待加强,行业最佳实践相对缺乏。这些因素也影响了金融机构对迁移采用分布式数据库技术的积极性。
(二)分布式数据库的生态建设仍需加强
生态建设是当前我国基础软件相对薄弱的一环,特别是对分布式数据库厂商而言,虽然在实现技术和产品方面实现突破,但在生态建设方面仍需积极应对投入转化慢、门槛高、市场接受程度低等挑战。一方面,部分产品的技术体系相对封闭,用户无法从市场快速获取合格的开发运维人员,导致业务改造及生产运维仍严重依赖原厂,规模化复制效应较差。另一方面,部分产品的开放性仍有待提升,与其他平台数据互联互通的能力不足在客观上造成了业务“上车容易下车难”的现实困境,增加了用户被锁定的风险。
(三)可持续发展的盈利模式需进一步探索
我国数据库的发展可以追溯到30多年前,在这样一个相对较长的发展周期内,技术和产品都取得了显著进展,但在产业化方面,知识产权的保护不够充分等诸多问题造成部分参与主体的市场化盈利能力较弱,产业整体规模难以做大。分布式数据库虽然已取得了一定进展,但“池子深才能养大鱼”,如何依托当前政策窗口,真正形成可持续发展的商业模式,还需进一步探讨。
三、行业的应用建议
尽管存在一些问题,但我们坚信分布式是数据库未来的发展趋势。如果将分布式数据库和单机数据库类比为“高铁”和“轿车”,因两者定位不同,期望“高铁”像“轿车”一样简单易用既不现实也不科学。所以应避免将分布式数据库的应用简单地理解为对单机或者集中式数据库的一对一替换,而要深入考虑如何充分发挥分布式数据库的技术优势。遵循以上思路,我们对于分布式数据库在金融等重点行业的应用提出以下几点建议:
(一)通过技术创新和最佳实践,推动行业应用不断深入
一方面,要探索利用人工智能等新技术提升产品服务效能。
人工智能技术可实现自动数据分区规划、故障自动诊断和自愈、自动负载均衡、面向混合负载的自调优等功能。目前人工智能技术在分布式场景已经有了一些单点突破,但距离全场景落地、实现整体成本的全面降低还有很长的一段路要走,需要继续加以积极的行业引导,推进技术交流和产业落地。
另一方面,需充分发挥好示范项目效应。
在金融等重点行业典型应用场景如分布式架构设计、多地多中心容灾等,形成最佳解决方案,并在行业推广落地。在此过程中,提炼出更适合分布式数据库的开发、运维、硬件建设等相关要求,研究制定数据库开发、运维、应用方面的标准规范,提高行业的标准化水平,引导各参与主体规范应用分布式数据库,推进行业转型。同时应约束不必要的定制化需求,减少无序竞争,实现技术聚焦。
(二)积极推进生态建设,发挥产业引领作用
从软件发展历史看,生态建设是基础软件产业化的重要一环。任何一款商业上真正成功的软件产品,无一不是生态建设上获得广泛认可的成功案例。
首先,充分发挥产业联盟桥梁纽带作用,推动产业发展。在行业内积极进行资源引流,逐步提升技术营运效率及影响力,搭建高端对话平台,促进分布式数据库应用方、应用开发方及厂商更好地交流,共同面对分布式转型下的业务及技术挑战,推进行业生态繁荣;加强与分布式中间件、分布式服务框架的合作与交流,通过开源、社区等形式建立广泛的赋能体系;鼓励应用软件厂商全面向分布式架构转型,建立相应的培训体系和检测认证体系。
其次,完善技术生态,鼓励引入第三方软件垂直提供商。在运维管控、工具端以及解决方案层面实现更多差异化的平台能力,加厚行业整体的技术底盘;鼓励第三方产品服务化和上下游集成,推进各产品的互联互通,打造良好技术生态,促进行业健康发展。
再次,建立基础软件开放生态体系,推动开源建设。应鼓励有研发实力的厂商基于国产开源数据库做发行商,有运维能力的厂商基于优质的国产数据库打造适用于自主可控要求的数据库解决方案。数据库厂商和合作伙伴应基于数据库代码开源、产品开放等形式,使数据库产业从封闭商业生态走向产业共赢的开放生态,共同打造开放的数据库生态体系。
最后,进一步推进政产学研合作,加强人才储备。明确人才发展战略,梳理多层次行业人才资源地图。加强厂商与各科研院所合作,推进高校在包括数据库在内的基础软件方面专业投入,鼓励有条件的厂商和高校开展课程共建、实践共建,为联合推进分布式数据库关键技术在理论和实践层面的难点问题攻关储备智力资源。
(三)全面拥抱云,开展行业可持续发展的尝试与探索
数据库上云已逐步成为产业共识。发展云数据库,不仅是对技术和产品的重要升级,更是对数据库良性健康发展的商业模式有益探索,对于实现主体可控、支撑行业长期稳定发展具有重要的现实意义。分布式数据库与单机数据库不同,需要更大的集群规模才能实现资源的更有效利用。分布式数据库与云计算是天然伴生关系,通过云化部署,能够帮助分布式数据库扬长避短,充分发挥分布式数据库在扩展性、资源调度方面的灵活性和优势,在提升资源利用效率同时,显著降低运维成本,实现真正业务价值。
一是云化基础设施可以通过智能调度、运维系统高效管理更为丰富的应用,并通过多云及边缘计算将应用扩展到多种场景中。
二是软硬协同可为应用提供更好的性能,提升应用隔离性等。
三是云数据库和云基础设施结合,如利用云基础设施本身的能力实现数据库的跨数据中心访问等,可使存储具备理解、预处理数据库语义的能力。
基于以上,一是建议扩大云数据库在金融行业的应用规模。
云数据库已经在互联网、电子政务等各行业得到了广泛应用,在金融行业的应用及推广也在稳步推进中。应引导重点用户单位与厂商尝试在行业落地云数据库及云平台,鼓励技术共创,共同探索基于现代云平台的分布式数据库运维及业务开发体系。
二是建议推进行业云发展以提高行业标准化程度。
在满足合规营运的前提下,应实现底层基础设施共享,降低中小用户对于分布式数据库的使用门槛和人才需求,减少重复投资,实现集约化营运,充分发挥分布式数据库的规模化优势。厘清各参与主体运营职责与边界,依托业内现有的成熟云平台技术,形成一个或若干个云技术底座,鼓励传统非云数据库厂商根据自身产品技术特点完成与云平台的对接,最终形成行业的云上产品集市,逐步简化并统一运维及交付界面,降低行业应用门槛,提高行业标准化程度。
对话王璞:谈分布式系统在企业落地的挑战
王璞,数人云CEO及创始人,为美国George Mason大学计算机博士,擅长分布式计算、大规模机器学习、海量数据处理。曾担任 Google 广告部门数据平台构架师,负责管理每秒访问量全球最高的架构平台。数人云技术团队具备丰富的互联网应用架构经验,大型分布式系统经验,特别是 PaaS 领域的经验。
分布式的概念提出是基于什么样的背景,主要帮助用户在数据中心建设中解决什么样的问题和痛点
分布式计算的概念大概七十年代就提出了。分布式计算本质上解决的是,突破单台物理服务器计算能力极限,通过松散耦合将多台物理服务器组成一个集群,提供更大的计算能力。分布式计算研究如何把需要非常巨大计算能力才能解决的问题分解成许多小的部分,分配给多台计算机进行处理,最后把这些计算结果综合起来得到最终的结果。
云计算也是分布式计算技术的一种,它最基本的概念,是将巨大的计算处理程序分拆成无数个小的子程序,再将这些程序分配给庞大的计算机网络系统经搜寻、计算分析之后将处理结果回传给用户。
Google是应用分布式计算最成功的典范,把分布式计算发扬光大,互联网公司之后形成的分布式计算技术,称之为云计算技术。
分布式技术经历了什么样的发展过程,目前的应用现状,以及面临的挑战
在过去的20多年间出现了大量分布式计算技术,如中间件技术、移动Agent技术、P2P技术、web服务技术和网格技术等等。Web服务和网格计算是互联网上进行大规模分布式计算的两大关键技术。主要解决分布式计算的系统管理和资源共享问题。
网格计算通过把互联网上分散在各处的硬件、软件、信息资源连接为一个整体,使人们能够利用分散的资源,完成大规模、复杂的计算和数据处理。新一代的分布式计算技术是Google这样的互联网公司把分布式技术发扬光大之后的云计算技术。
从技术本身来讲,分布式技术目前发展已经相对成熟。尤其Google这样的互联网公司把分布式计算可能碰到的技术问题已经解决的差不多。但目前企业级客户应用的还不多,用的不太好。分布式计算目前的挑战是进一步降低使用门槛,让企业级客户也能很好地用起来。
分布式系统相比传统的集中式存储,有哪些主要的特点和优势?
分布式存储,是分布式计算技术里的一个方面。简单说就是,将数据分散存储到多个数据存储器上,目前多借鉴Google的经验,在众多服务器上搭建一个分布式文件系统,再在这个分布式文件系统上实现相关的数据存储业务,甚至是二级存储业务。
分布式存储的好处是,可扩展性和稳定性很好。一台服务器存储数据有限,多台服务器组成集群。分布式存储系统通过集群方式扩展到几百甚至几千台集群规模来解决系统扩展能力, 通过软件层面对单机服务器的硬件容错能力大大提升了整体集群的容错能力和稳定性。
分布式存储,目前主要是互联网公司在用,传统企业掌握的比较弱,尤其是分布式软件存储系统。
在设计分布式系统时,考虑的关键因素有哪些?
可扩展性和容错。可扩展性,随着服务器不停增加,集群规模不停增加。分布式系统对硬件要求不高,目前云计算主流应用的是廉价的X86服务器,不能做到高可靠。分布式系统有很好的容错能力,允许硬件发生故障。
分布式系统常见的事务处理机制及其优缺点
分布式系统做事务处理比较难。如果一个事务分布到多台服务器上,或者在分布式并行的环境下,事务之间可能会有冲突。为保障系统的可用性、可靠性以及性能,在分布式系统中,往往会设置数据冗余,即对数据进行复制。当一个数据库的副本被破环以后,那么系统只需要转换到其他数据副本就能继续运行下去。当访问单一服务器管理的数据进程数不断增加,系统就需要对服务器的数量进行扩充,此时,对服务器进行复制,随后让它们分担工作负荷,就可以提高性能。但同时,如何保障多个数据节点之间数据的一致以及如何处理分布式事务,将成为一个复杂的话题
常见的事务处理机制有:
Master-Slave 复制、Master-Master 多主复制、两阶段提交(Two-phase commit,2PC)、三阶段提交(Three-phase commit ,3PC)、Paxos算法等等。
分布式要遵循ACID四个原则,即A原子性、C一致性、I隔离性、D持久性。在涉及分布式环境时,这些原则都提高了难度。
传统事务性系统偏单点,不好扩展,有很多事务需要处理。分布式处理能力显著增加。
在实际的企业环境中,设计分布式系统时对于CAP理论是如何应用的?(分布式系统中事务处理的技术
为了保障性能和可靠性,将数据复制多份,分布到多个节点上,这就带来了一个难点,如何保持各个部分数据的一致性。CAP理论不可同时兼得这三种特征,也就是说选择了AP,就必须牺牲掉A。
- 一致性(Consistency):所有节点同一时间看到是相同的数据;
- 可用性(Availability):不管是否成功,确保每一个请求都能接收到响应;
- 分区容错性(Partition tolerance):系统任意分区后,在网络故障时,仍能操作
扩展到分布式存储后,受限于分布式 C(一致性)A(可用性)P(分区容忍性)理论,几乎不可能满足完整的事务特性。 各种分布式存储服务实现都对单机存储的事务特性作了权衡取舍,满足特定的服务场景需求。
分布式存储系统是基于网络互联的,除了基本的磁盘访问性能开销,还多了网络性能开销。 原本由磁阵控制程序负责的数据在磁盘中的分布、负载均衡策略和一致性保障, 在分布式存储中都需要软件在整个机器集群层面去考虑,复杂度大大提高。
目前分布式技术(系统)在哪个行业应用比较成熟或者比较广泛?为什么?
目前主要是互联网行业在应用,这主要跟Google的推动息息相关。Google做互联网搜索业务起家,业务量非常大,搜索要存储数据很多,同时请求很多。一开始Google买不起高端的大型机、小型机,用廉价的X86 PC服务器组成集群。但同时,Google证明了新一代分布式计算技术,即云计算技术,可以处理大规模的计算请求。这是Google经过长时间探索形成的一个成熟的应用。
传统行业对分布式系统的应用还很少,业务量没那么大,主要靠高端硬件来保证可靠性稳定性以及处理事务的机制。随着传统企业很多业务上云,很多传统IT的做法无法带来互联网业务带来的挑战,比如流量的集中爆发,业务的快速迭代,敏捷的能力等等,将推动分布式系统和技术的采用。
很多技术人员对于超融合和分布式的概念的认识不是很清晰,超融合与分布式在架构上,以及计算资源和存储资源的管理上,有哪些主要的区别吗
超融合本质上是分布式系统的一种设计方式,分布式系统计算资源的一种设计方式。Google在早期数据中心都是X86服务器,当时的做法是尽可能降低对硬件服务器的要求,用廉价的PC服务器,普通的硬盘。Google更多的做法是,Google软件能力很强,设计软件上的可扩展性,比如数据中心扩容,把Google各种分布式软件系统装上就行,比如内部文件系统、任务调度系统等等。
超融合其实是对企业级客户更有意义。传统企业的数据中心IT规划都是按照计算单元、网络单元、存储单元,扩容的时候相对痛苦。超融合是说把计算、存储和网络都融合在一起。一个机架变成一个最小的数据中心计算单元,既有计算单元,又有网络单元、存储单元。这样,扩容时,扩个机架就好,这样就做到了数据中心计算能力的平行扩展。
超融合是分布式计算资源的设计架构,而不是应用程序的设计架构。互联网公司很多基础的应用调度,计算能力调度,存储,互联网公司是拿软件自行实现的,不会用到超融合技术。
分布式系统相比较传统集中式系统,对于企业的数据中心管理有哪些优势,存在哪些困难,一般企业中如何处理这些问题?
分布式系统弱化了对硬件的管理,强化软件的管理。对企业数据中心带来很大的挑战,传统企业数据中心是面向资源管理,管理高端的硬件。比如数据中心的运维管理是面向资源管理,传统软件在部署时,都是面向静态的管理模式。一个服务器上部署哪些应用都是固定的。现在分布式系统后,对硬件管理弱化,对软件管理极度强化。比如,软件必须是分布式,调度都是它来调度。对于分布式系统,困难在于,企业相应的软件的能力要跟得上。企业的分布式系统管理,云上的调度,都是分布式调度。
分布式系统在开发效率上造成的问题和解决思路
分布式系统本质上会提升开发效率,有很强的容错能力和可扩展性。在开发上增量迭代。微服务对整个系统的影响都是非常局部和有限的。分布式系统每次上线,做增量的上线,只需要修改一小部分,保证对外提供的服务是可用的,而不会造成停服务中心。这是可扩展性方面的优点。
分布式系统在开发上带来的问题是,对开发的难度加大了。互联网公司有专门的架构师团队,解决分布式系统底层的基础架构,比如在什么样的开发架构下开发分布式应用。开发架构解决分布式系统常见的一些问题,比如互相通讯的问题,冗余的问题,容错的问题。这不是分布式系统做应用开发要解决的,而是要提供应用的分布式开发框架来解决这些问题。目前,互联网公司内部都有一套相对成熟的分布式系统的开发框架,以及基于这个开发框架开发出来的应用,一系列测试的流程,和管理的平台工具等等。
对企业客户来讲,单纯实现分布式开发,基于某个开源框架实现分布式开发还远远不够。还需要自动化分布式系统的测试流程,分布式系统线上运行时管理的一些工具平台建设起来。
数人云的分布式解决方案和产品介绍
数人云基于微服务开发框架,打造了一整套端到端的解决方案。给企业客户提供最主流开发框架Spring Cloud,企业客户在做开发时,可以基于Spring cloud做Java的开发应用。但是,Spring Cloud开发框架,仅仅帮助企业解决了一部分问题。本身还有很多缺失,比如自动化测试,运行时管理能力也比较弱。灰度发布时,系统更新保证不停服不停机等都还比较弱。
数人云EAMS产品体系,能够给客户提供包括开发框架、周边配套工具链,比如服务注册、服务发现、API网关、负载均衡、服务治理、配置中心、监控管理等一整套微服务化体系。帮助客户降低微服务架构的使用门槛。企业用户在做SpringCloud做开发时,可以少考虑未来程序运行时管理的一些问题,进而进一步降低企业客户上云的门槛。
分布式技术的未来方向
分布式技术的未来方向肯定朝着更加自动化,成熟易用稳定的方向发展。Spring Cloud是微服务应用的开发框架,k8S是容器自动化的调度平台,这都是有代表性的一些开源技术。
分布式存储,处理事务性的技术等目前来讲都相对较新。未来这些技术会更加成熟稳定,企业的使用门槛大大降低。
以上是关于华为云数据库首席专家谈分布式数据应用挑战和发展建议的主要内容,如果未能解决你的问题,请参考以下文章
[个推 CTO前MSN中国首席架构师 谈数据智能] 之本质及技术体系要求