162022.12

云原生数据库体系演进

2022.12.16


  “云原生”是什么?



  业内一般认为,区别于从本地环境移植到云上的大部分程序,云原生强调最初的开发就是为了最终部署到云环境上。在公有云、私有云和混合云等新型动态环境中,赋能组织或企业去构建和部署可弹性扩展的应用。



  用最简单的语言来说,云原生是一种构建和运行应用程序的方法,是一套技术体系和方法论。云原生的英文为CloudNative,其实是一个词组Cloud+Native,词组中前者表示应有程序位于云中,后者表示应用程序从设计之初就会考虑云环境,原生为云而设计,在云上以最佳姿势运行。



  1.云原生



  云原生”这一概念的提出者Matt Stine于2017年将云原生归纳为模块化、可观察、可部署、可测试、可替换、可处理6特质。而云原生领域影响力最大最有话语权的组织CNCF,他们给出的定义则是这样的:



  云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。



  这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。



  云原生中的“云”表示存在于云中,而不是传统的部署于本地。比如云盘中的文件就在云中,而不是存储在用户电脑的硬盘中。“原生”则代表着应用从设计环节便考虑到云环境的因素,为云而设计,在云上运行。



  一句话概括,“云原生”就是为“云”而设计,且适合上“云”。更有人形容,云原生是生在云上,长在云上,也应用于云上。



  2. 云原生数据库



  云原生数据库是一种云原生数据基础设施,是一种完全利用公有云优势的数据库服务,具备极致的弹性伸缩能力、无服务器(Serverless)特性、全球架构高可用与低成本,并可以与云上其他服务集成联动。作为一种云平台,云原生数据库以PaaS(平台即服务, Platform-as-a-Service)的形式进行分发,经常被称作DBaaS(数据库即服务, DataBase-as-a-Service)。用户可以将该平台用于多种目的,例如存储,管理和提取数据。



  云原生数据库通常通过在云基础设施之上安装数据库软件来实现,这种方式使得云原生数据库具备了传统数据库所不具备的直接访问性和运行时可伸缩性。



  首先是普遍可访问和高可用性。因为云原生数据库是完全存在于云上的,所以他可以随时随地的从多前端访问,提供云服务的计算节点。因其集群部署在云上,所以单点失败对服务的影响特别小。而且当需要升级或更换服务的时候,可以对节点进行不中断服务的逐渐升级。



  其次是高扩展性与可迁移性。云原生数据库会与底层的云计算基础设施分离,所以能够灵活及时的调动资源进行扩容和缩容,以从容应对流量激增可能带来的压力,以及流量低谷期因资源过剩造成的浪费。也正是因为能够灵活扩缩容,云原生数据库也具备很强的可迁移性,我们甚至可以粗暴的理解为在新的位置扩容100%又在旧的位置缩容全部的50%。



  此外,基于高扩展性、高可用性以及可迁移性等特征,云原生数据库还具备可监控性和安全性的特征。



  一方面黑箱状态下无法保证及时处理扩容、节点故障等需求和问题;另一方面全盘部署在云上且各服务之间相互独立,可以对应用或服务提供更多层的安全防护和实现许多新的容错服务。



  最后是演进式设计与快速迭代。云原生数据库中的各项服务之间是相互独立的,个别服务的更新并不会对其他部分产生不利影响,而不是一旦出了问题就只能全场熄火。此外,云原生的研发测试和运维工具是高度自动化的,这使得应用的更新会更加快速频繁。



  将网络资源和云更好的融合在一起,处处独立而又自然联系着,才能更充分的发挥数据库上云的优势,得到更高的效率。



  云原生数据库有以下几个优点:



  (1) 易处置性简单来讲, 易处置性是指数据库在无需事先通知的情况下,即时处理崩溃或启动进程的能力。尽管现在有先进的技术,但是像磁盘故障、网络隔离故障,以及虚拟机异常等,仍然不可避免。



  (2) 对于传统数据库,这些故障尤其有害,因为用单个机器运行整个数据库,即便一个很小的问题都可能影响所有功能。而云原生数据库的设计具有显著的易处置性,即允许虚拟机在即时通知下立即重启或重新调度。实际上,易处置性已从单个虚拟机扩展到了整个数据中心。随着我们的环境持续朝着更加稳定的方向发展,云原生数据库将发展到对此类故障无感知的状态。



  (3) 增强的安全性DBaaS运行在受高度监控和安全的环境里,受到反恶意软件、反病毒软件和防火墙的保护。除了全天候的监控和定期的软件升级以外,云环境还提供了额外的安全性。相反,传统数据库容易遭受数据丢失和被不受限制的访问。基于服务提供商通过即时快照副本提供的数据能力,用户可以达成“RPO=0,RTO<60秒”的目标。



  (4) 可扩展性能够在运行时进行按需扩展的能力是任何企业成长的先决条件。因为这种能力让企业可以专注于追求商业目标,而不用担心存储空间大小的限制。



  (5) 传统数据库将所有文件和资源都存储在同一主机中,而云原生数据库则不同,它不仅允许你以不同的方式存储,而且不受存储问题的影响。



  (6) 更好的可访问性传统数据库最重要的限制之一,是它只能通过连接数据库系统本身进行访问。而云原生数据库提供对数据库全天候的访问,以便你随时进行任何修改,而你只需要一个可以访问internet的计算机。这样一来,就消除了可能发生的潜在的延迟,同时也为多个开发人员之间的协作开辟了途径。



  (7) 显著的成本节约建立一个数据中心是一项独立而完备的工程,需要大量的硬件投资,还需要能可靠管理和维护数据中心的训练有素的运维人员。此外,持续的运维会给你的财务带来相当大的压力。而使用云原生的DBaaS平台,你可以以较低的前期成本,获得一个可扩展的数据库,这可以让你腾出双手,实现更优化的资源分配。



  云最开始受益的就是应用端,传统架构下曾经以“天”为单位的扩容,云端能实现“秒级”扩容,降低软硬件成本的同时,提高了系统的快速扩容能力,以应对像“双十一”这种可预见且短时间的请求量高峰。但是有些云端应用还是访问传统的数据库架构,数据库层没得到云端的实惠。现在这种云原生数据库,就解决了这问题,计算和存储分离,让数据库资源能从云端得到灵活扩容、故障快速恢复、更高的可靠性、数据快速迁移等,更快满足业务的各种需求。



  3. 云原生分布式数据库



  分布式数据库是由多个相互连接的数据库组成的集合,这些数据库组合在一起形成一个面向用户的单个数据库。实际上,它们分布式在各个数据中心,通过中央服务器进行通信。



  正如著名工程师布伦丹•伯恩斯(Brendan Burns)在其著作《设计分布式系统》(Designing Distributed Systems)中所说:“这些系统越来越重要,这意味着必须基于冗余、容错和高可用来构建这些在线系统。这些要求的融合导致需要构建的分布式系统数量增加了一个数量级。”



  云原生数据库,是通过云平台进行构建、部署和交付的数据库服务,通常以 DBaaS(Database-as-a-Service)的形态,将数据库底层细节隐藏起来,提供给用户一个能够弹性伸缩,高可用、高可靠、可以随时随地访问的数据库服务,它代表了数据库的发展趋势,云原生数据库的优势,加上分布式数据库的效率,代表了未来理想的解决方案。



  以下是可能考虑采用分布式数据库系统的一些原因:



  (1) 水平可伸缩性。在选择正确的数据存储方式时,可伸缩性是一个重要的考虑因素。这就是云原生分布式数据库是理想解决方案的原因,因为它允许企业轻松扩展。分布式数据库的关键特性之一是跨不同数据源的计算过程彼此独立,这使得按需添加节点和调整功能变得非常容易。选择以如此大规模提高计算能力是一个强大的增长手段,它使现代企业能够以前所未有的方式在全球发展。



  (2) 没有单点故障。衡量应用程序性能的唯一标准是它为最终用户提供的用户体验水平。对于传统数据库,由于高度的相互依赖,中央服务器的单个问题会损害工作负载的可用性。如果一台(唯一的)服务器出现故障,则可能导致整个应用程序崩溃,而这将导致用户体验指标急剧下降。鉴于数据库系统的复杂性,而服务器崩溃是不可避免的,这进一步破坏了传统数据存储的方法。相反,由于数百台计算机服务器相互配合工作,因此分布式数据库可以确保即使多个节点发生故障,应用程序仍能继续正常运行。即使部分功能受到影响,整体功能却能正常运行。



  (3) 增强的性能潜力。应用程序每秒都要面对数百个针对数据库的请求,这需要强大的处理能力。对于传统的方式,可能会导致性能问题、用户界面延迟等,从而影响整体的用户体验。比如,异常多的请求甚至可能导致应用程序崩溃。而在云原生的分布式数据库中,工作负载和访问请求被分散到多个服务器和计算机系统上。这意味着每个任务都由特定系统处理,而不是通过单个系统处理。因此,数据库持续无缝地工作,并提高了工作效率。分布式数据库中的每个请求和工作负载都是并行完成的,然后将其执行结果返回给中央服务器,以便在数据库的用户端实时更新。



  4.云原生数据库特性



  专库专用,极致性能



  传统数据库的数据类型单一、这导致了性能/功能受限,无法为应用提供最合适的性价比与极致的性能。“一刀切”的方式已经不再适用,而云原生数据库理念“专门构建”更加合适来解决这些需求。用户可以在云上快速部署/轻松维护不同类型数据库,每个应用场景使用最合适的数据库,充分发挥其性能,功能优势。



  无服务器,敏捷创新



  无服务器 Serverless 是一项仅在公有云上可以发挥最大优势的技术能力。利用无服务器架构和公有云庞大的资源池,云原生数据库可以做到真正的按需扩展,并按实际使用资源付费,达到最佳的性价比。



  全球架构,一键部署



  云原生数据库可以轻松全球部署,实现异地灾备和全球客户体验一致的目标,进而保证业务拓展到全球。不同区域的客户可以享受到同样的数据访问体验。解决数据库全球扩展问题,在业务快速发展阶段,可以有效帮助底层数据架构的扩展。



  数据联动,广泛集成



  云原生数据库深度融合智能湖仓架构,客户可以方便地跨关系型数据库、非关系型数据库、对象存储、大数据系统实现联合数据查询和加工,这样就可以让数据库中的数据方便地应用于机器学习和大数据中,面向新的数据驱动的创新需求,可以更敏捷的实现,让创新尽快面世。



  国产数据库正在云的道路上探索,数据库未来的发展方向,已经渐渐明朗,但是,作为学习者,还是要沉下来,打好基础,根据实际需求,有的放矢地尝试,切忌盲目跟风。