如今,企业面临着指数级递增的海量存储需求,业务也面临更多的热点和突发流量带来的挑战。由于企业需要降本增效,进行更智能的数据决策,传统的商业数据库已经难以满足和响应快速增长的业务诉求。
在此背景下,云原生数据库成为大势所趋,不管是老牌的数据库厂商,还是大型云计算企业都在向这一趋势靠拢。
全球知名咨询公司Gartner指出,云将主导数据库市场的未来,到2022年,75%的数据库将被部署或迁移至云平台,只有25%的数据库会在本地运行。
云化无疑代表了未来,企业如何在云原生架构下使用数据库,就成为必须要思考的问题。
云原生数据库正当时
云原生数据库,是一种通过云平台进行构建、部署和分发的服务。
这种云原生属性是相比于其他类型数据库最大的特点。
作为一种云平台,云原生数据库以PaaS的形式进行分发,用户可以将该平台用于多种目的,例如存储、管理和提取数据。
云原生数据库通常通过在云基础设施之上安装数据库软件来实现,这种方式使得云原生数据库具备了传统数据库所不具备的直接访问性和运行时可伸缩性。
首先是普遍可访问和高可用性。
因为云原生数据库是完全存在于云上的,所以可以随时随地从多前端访问,提供云服务的计算节点。
因其集群部署在云上,所以单点失败对服务的影响特别小。
当需要升级或更换服务的时候,可以对节点进行不中断服务的逐渐升级。
其次是高扩展性与可迁移性。
云原生数据库会与底层的云计算基础设施分离,所以能够灵活及时的调动资源进行扩容和缩容,从容应对流量激增可能带来的压力,以及流量低谷期因资源过剩造成的浪费。
正是因为能够灵活扩缩容,云原生数据库也具备很强的可迁移性,我们甚至可以粗暴的理解为,在新的位置扩容100%,又在旧的位置缩容全部的50%。
此外,云原生数据库还具备可监控性和安全性的特征。
在传统数据库的黑箱状态下,是无法保证及时处理扩容、节点故障等需求和问题的,但是云原生数据库全盘部署在云上,且各服务之间相互独立,因此可以对应用或服务提供更多层的安全防护,并实现许多新的容错服务。
最后是演进式设计与快速迭代。
云原生数据库中的各项服务之间是相互独立的,个别服务的更新并不会对其他部分产生不利影响,而不是一旦出了问题就只能全场熄火。
此外,云原生的研发测试和运维工具是高度自动化的,这使得应用的更新会更加快速频繁。
下一代云原生数据库架构
近十年是数据库市场发展最快的十年。根据Gartner的数据,目前数据库市场营收已经达到整个软件市场的18.4%,而云数据库贡献了其中的68%。
特别是近几年,云原生数据库的理念为市场和各大云厂商所认可,各大厂商纷纷在自研云原生数据库领域持续发力,未来的云数据库市场是自研云原生数据库之间的竞争。
在云原生数据库领域,AWS于2014年推出的Aurora是先行者。
国内厂商也不甘落后,阿里云在2017年推出了PolarDB,腾讯云在2018年推出了CynosDB,华为云在2020年推出了GaussDB for MySQL。
各大厂商都希望基于成熟的基础设施“云”化技术,解决传统数据库架构上的短板。
尽管云原生数据库的出现,很好地解决了传统架构数据库的诸多缺陷,如:数据问题回档慢、维护成本高、可用性低、故障恢复慢等,让企业能够更高性能且灵活地访问数据。
但不可否认的是,云原生数据库才刚刚走出了第一步。
首先是实现了存储和计算分离,打破了存储的单机限制,使得存储独立弹性成为可能,并为后续的一写多读集群奠定了基础。
其次是基于分布式共享存储的一写多读架构,使得数据库的读能力可以快速Scale Out,同时由于多个读节点和写节点共享同一份存储,降低了成本,提升了资源利用率。
虽然当前的云原生架构解决了存储的弹性问题和读扩展问题,极大的提升了云原生数据库的弹性和扩展能力,但是依然存在两个比较大的瓶颈点,即内存弹性和单点写入问题。
因此,阿里云数据库的总负责人、达摩院数据库首席科学家李飞飞认为,下一代云原生数据库架构将在以下两个方向实现突破:
基于CPU和内存分离的分布式共享内存池
当前的云原生架构虽然实现了存储和计算分离,存储独立弹性,但是计算节点仍然包含了CPU和内存,无法真正实现秒级弹性扩容和Serverless。
因此在云原生数据库中实现CPU和内存分离,内存独立弹性非常有必要。同时CPU和内存分离可以让多个CPU共享同一份内存,降低内存资源开销。
基于分布式共享内存池的多点可写技术
当前一写多读的云原生架构,虽然实现了读能力的扩展,但是写能力仍然受到单机的限制,无法扩展。
而采用分库分表的分布式数据库扩展,又会牺牲兼容性,需要应用感知和改造。
多写架构主要困难在于信息交互的低效,导致线性扩展性低下。
在CPU和内存分离以后,多个CPU可以共享同一个内存池来交换页面信息和事务信息,同时结合高性能RDMA网络和NVM,使得高性能多写架构成为可能。
未来的云原生分布式数据库
随着企业业务更加数字化、智能化,企业面临的数据存储量将会更加巨大,面临着更多突发状况带来的挑战。
据IDC预测,2025年,三分之二的企业将会每天都发布软件版本,通过敏捷的开发能力来实现创新与交付,以形成差异化的市场竞争力。
在这样的商业趋势下,数据库就需要全面进入云原生+分布式的时代,实现智能升级,充分释放云计算红利。
所谓的分布式,是面向业务扩展而出现的一个概念,而分布式数据库,就是为了解决存储可扩展性的一类数据库。
它是由多个相互连接的数据库组成,这些数据库分布在各个数据中心,通过中央服务器进行通信,然后组合在一起形成一个面向用户的单个数据库。基于Shared Nothing的架构,分布式数据库能够实现数据的水平分片、水平扩展。
而云原生数据库是基于Shared Everything+Shared Storage的存储计算分离架构,能够实现资源池化高效管理。
因此,云原生数据库的优势+分布式数据库的效率,可以将两者的特性完美结合,代表了一种未来的解决方案。
事实上,云原生和分布式如今已经融为一体。如果底层基础设施全部云化,人们思考技术问题的角度自然变成“云原生”角度。
正如华为轮值董事长徐直军所说,随着云原生应用深入企业各个业务场景,云原生正在走向分布式,满足跨云跨地域统一协同治理、保证一致应用体验等新需求。
未来,将云原生与分布式结合起来,全新的云原生分布式架构的数据库将具备高扩展性、易用性、迭代快速、成本降低等特点,具体而言:
高扩展性
云原生分布式数据库与底层的云计算基础设施分离,所以能够灵活及时调动资源进行扩容缩容,以从容应对流量激增带来的压力,以及流量低谷期因资源过剩造成的浪费。生态兼容的特点,也让云原生数据库具备很强的可迁移性。
易用性
云原生分布式数据库非常易于使用,它的计算节点在云端部署,可以随时随地从多前端访问。
因其集群部署在云上,通过自动化的容灾与高可用能力,单点失败对服务的影响非常小。当需要升级或更换服务时,还可以对节点进行不中断服务的轮转升级。
快速迭代
云原生分布式数据库中的各项服务之间相互独立,个别服务的更新不会对其他部分产生影响。此外,云原生的研发测试和运维工具高度自动化,也就可以实现更加敏捷的更新与迭代。
节约成本
建立数据中心是一项独立而完备的工程,需要大量的硬件投资以及管理和维护数据中心的专业运维人员。
此外,持续运维会造成很大的财务压力。云原生分布式数据库以较低的前期成本,获得一个可扩展的数据库,实现更优化的资源分配。
结语
应用程序和软件开发正在经历一场云原生的变革,从编排、管理到分析,所有的东西都开始在云上从头构建。
由于在功能和可靠性上优于传统数据库,再加上增强的可伸缩性,云原生分布式数据库无疑代表了数据库的未来。
可以预见,谁能够把云原生和分布式技术结合得更加完美,谁就会在未来的市场竞争中占得先机。