企业考虑云原生分布式数据库的三个原因
1. 云原生
“云原生”这一概念的提出者Matt Stine于2017年将云原生归纳为模块化、可观察、可部署、可测试、可替换、可处理6特质。而云原生领域影响力最大最有话语权的组织CNCF,他们给出的定义则是这样的:
云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。
这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。
云原生中的“云”表示存在于云中,而不是传统的部署于本地。比如云盘中的文件就在云中,而不是存储在用户电脑的硬盘中。“原生”则代表着应用从设计环节便考虑到云环境的因素,为云而设计,在云上运行。
一句话概括,“云原生”就是为“云”而设计,且适合上“云”。更有人形容,云原生是生在云上,长在云上,也应用于云上。
2. 云原生数据库
云原生数据库,是一种通过云平台进行构建、部署和分发的服务。这种云原生属性是它相比于其他类型数据库最大的特点。作为一种云平台,云原生数据库以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) 增强的性能潜力。应用程序每秒都要面对数百个针对数据库的请求,这需要强大的处理能力。对于传统的方式,可能会导致性能问题、用户界面延迟等,从而影响整体的用户体验。比如,异常多的请求甚至可能导致应用程序崩溃。而在云原生的分布式数据库中,工作负载和访问请求被分散到多个服务器和计算机系统上。这意味着每个任务都由特定系统处理,而不是通过单个系统处理。因此,数据库持续无缝地工作,并提高了工作效率。分布式数据库中的每个请求和工作负载都是并行完成的,然后将其执行结果返回给中央服务器,以便在数据库的用户端实时更新。
国产数据库正在云的道路上探索,数据库未来的发展方向,已经渐渐明朗,但是,作为学习者,还是要沉下来,打好基础,根据实际需求,有的放矢地尝试,切忌盲目跟风。
我有话说: