服务器|云原生数据库的幕后英雄—浅谈分布式数据库的计算和存储分离

分布式数据库替代传统商业数据库是近年最热门和最具争议的话题。理论上没有什么数据库不能被替代,现实却往往是代价大到难以承受。怎样才能更好的降低替代带来的代价呢?开源数据库TiDB创始人黄东旭在《近十年数据库流行趋势纵览!存储计算分离、ACID 全面回归......》将“存储和计算分离”作为近年数据库改造流行趋势之首,其作用就是降低数据库替代的代价。本文将通过分析当前主流厂商的数据库计算和存储分离(简称存算分离)对数据库替代中一些棘手问题进行解析,供分布式云原生数据库开发和使用者参考。
服务器|云原生数据库的幕后英雄—浅谈分布式数据库的计算和存储分离


计算和存储分离是行业巨头共同的选择
回顾存算分离的发展历程,今天倡导分离的,恰巧就是当年提出计算和存储一体架构的互联网和云计算巨头们。到底存算分离有什么独特的魅力,我们看看业界的巨头大V怎么说?

作为公有云的开创者,AWS在十多年前就推出了Hadoop托管服务EMR。EMR采用了S3存储替代HDFS作为存储层:“与本地集群要求严格的基础设施不同,EMR可以将计算和存储分离,使您能够独立扩展每层并利用 Amazon S3 的分层存储。利用EMR,您可以预置一个、数百个甚至上千个计算实例或容器来处理任何规模的数据,只需要按实际使用量付费。” 这反映出AWS对存算分离带来价值的认知:灵活扩展和节省成本(按量付费)。这颠覆了长期以来大家对使用外置存储扩展性差,成本高的认知。在历经市场考验后,也被业界纷纷效仿。

阿里副总裁,数据库产品事业部总裁李飞飞在《云原生分布式数据库与数据仓库系统点亮数据上云之路》中说:“传统的冯诺依曼架构下计算和存储是紧密耦合的,可将多个服务器通过分布式协议和处理的方式连成一个系统,但是服务器和服务器之间、节点和节点之间,分布式事务的协调、分布式查询的优化,尤其要保证强一致性、强ACID的特性保证的时候,具有非常多的挑战……云原生的架构,本质上底下是分布式共享存储,上面是分布式共享计算池,中间来做计算存储解耦,这样可以非常好地提供弹性高可用的能力,做到分布式技术集中式部署,对应用透明。”
服务器|云原生数据库的幕后英雄—浅谈分布式数据库的计算和存储分离


阿里的云原生数据库重新回到提升数据库Scale Up扩展能力的路上,来解决分布式事务,弹性扩展的问题。在必要时可以结合分布式分库分表模式进行Scale Out扩展。

华为云数据库专家也表示“高可用、易用易维、高扩展、高性能、与大数据相辅相成的云数据库,尤其是基于云场景架构设计的云原生分布式数据库,计算与存储分离、能充分发挥最新硬件性能、利用 AI 和 ML(深度学习) 等功能成发展趋势。”

上面几家是上(数据库)下(存储)内(自有业务)外(公有云)通吃的,而Facebook这种自己玩的互联网厂商完全从自己的业务需要出发,研发了一套温数据存储,以存算分离的架构来支撑亿的用户量产生的大数据。而Snowflake走了一条采用通用对象存储构建公有云数据仓库服务的道路,并实现了数据仓库的计算无状态化。
服务器|云原生数据库的幕后英雄—浅谈分布式数据库的计算和存储分离


云原生中无处不在的存算分离

云原生一直在努力实现无状态化,而实现的手段就是把数据层剥离出去!只不过在应用层,数据可以剥离给缓存、数据库、文件存储和消息队列,而数据库、消息队列等要云原生时就只能自己做存算分离了。像最近大火的消息队列Apache Pulsar 给自己的定义是这样的:“Apache 软件基金会顶级项目,下一代云原生分布式消息流平台,集消息、存储、轻量化函数式计算为一体,采用计算与存储分离架构设计,支持多租户、持久化存储、多机房跨区域数据复制,具有强一致性、高吞吐、低延时及高可扩展性等流数据存储特性。”