论分布式数据库 TiDB 架构的“存”与“算”
作者: yifan 原文来源:https://tidb.net/blog/57ed0da1
在云计算基础设施 IaaS 服务中,“存”与“算”的分界是清晰的,客户会分别为“存”与“算”按需消费。不只是专门的存储服务如 S3、对象存储、文件存储、NAS 等,即使是在最基本的虚拟机服务 ECS 上,“存”也需要由消费者进行选择,而选择的对象是云盘,即位置对用户透明,不需要消费者关心是否在计算节点的本地:其实连计算节点本身位于何处也是无需关心,又何谈本地。随着云计算服务的持续发展,“存”与“算”的界限,无论是从消费模式上,还是从技术上,都呈现出越来越清晰的趋势。
而在 PaaS 层的数据库服务中,则出现两种情况。一种是“存”与“算”也由消费者分别选择并扩缩,而另一种则是购买服务时,“存”与“算”是固定捆绑的架构组合,可以定义大小,但无法相对独立地选择、部署与扩缩。
引发上述数据库服务不同消费模式的因素,实质上是在云中部署的数据库产品本身不同的技术架构,即“存”“算”分离,或“存”“算”一体。由于对单体数据库谈“存”与“算”的分离与一体,并没有多大意义,因此,主要是针对分布式数据库而言,其不同的特性带来了业界较为广泛的讨论。
那么,首先分析一下,在“存”“算”基础设施愈来愈独立清晰的趋势下,建立在其上的数据库服务“存”“算”一体现象从何来呢?不难发现,云平台上这样的数据库服务,大多都是基于“从非云环境中、应企业级 On Premise 需求产生与发展而来”的数据库产品。也就是说,其产品本初的设计理念就与“云”无关,只是后来为了寻求不同的商业模式而部署在云上而已;而大多数“存”“算”分离的数据库产品,其创始之初,就面向云环境进行设计,其中最典型的就是云原生分布式数据库 TiDB。这里,顺便澄清一下现在极为流行的云原生概念,相当多的人混淆了云适配部署与云原生的概念,认为只要部署在云上,就是云原生了。其实云原生的概念与其字面意思极为直白契合,就是指在“云环境”中“原生”的,而不是从别的地方迁来的,即“云原生”就是生长于云上的,而非云原生则是迁移到云上的,这也正是 TiDB 区别于同类产品的设计初衷与架构特点。这与要深入理解目前同样火热的 NFT,就必须先正确理解“区块链原生”概念的道理是一样的。
相信现在,关于“云”的问题应该是比较清晰了:“存”“算”分离是云原生的架构,而“存”“算”一体则不是,这一点相信读者不会有太多的疑问。那么,接下来的问题是:“云原生”就一定好吗?面向企业级的需求,“存”“算”分离与“存”“算”一体孰优孰劣?
世界上本来就没有绝对的好与绝对的坏,“存”“算”一体架构的设计,也是在满足企业需求的过程中自然产生的,对分布式数据库而言,“存”“算”一体的设计,无论是对传统单体数据库的替代上,还是对采用业务单元化策略的局部性满足上,还是对基于已有成熟数据库体系以二次开发构建分库分表数据库产品的方便性上,都产生了积极的历史作用。在那种情况下,不去考虑“云”的趋势与设计需求,也是合理的。
然而,过去几十年的历史已经证明,计算机技术的发展是极为迅速的,无论是软件还是硬件,当然包括数据库技术同样如此。
首先,往远处看的话:从计算机科学发展的角度,在云计算大趋势的驱动下,“计算”与“存储”技术相对独立的发展道路已经越来越明显,越来越清晰。可以想见,未来“计算”力相关的技术、架构与产品必将会发展到比如今所有极为先进的状态;未来“存储”相关技术、架构与产品也必将会进展到一个无法完全预计的崭新阶段,同时越来越“智能”。并且从目前的形势看,这个未来并不会太久远,如 TiDB 这样的“存”“算”分离架构无疑是适合那个未来的各种可能的,因为它本身就是为此而原生的,而“存”“算”一体在未来或许将变得无从谈起;而从国际上先进数据库技术发展的实际情况来看,绝大多数崭新的、最前沿的数据库相关技术与产品,都是云原生的,换句话说,都是采用“存”“算”分离的架构,这一点,几乎少有例外;而近期 TiDB Cloud 产品与相关的云运营策略发布与实施以后,为了在存储与计算层面都能很适配各种优秀的云基础设施,“存”“算”分离的架构就显得更加必要与先进了。
(或许可以猜测,把磁盘挂在本地这种现存商业计算机的架构,也是由企业 / 个体对计算机使用的商业模式驱动的,而不一定是技术驱动的必然结果)
其次,往近处看:对企业级现阶段数字化转型中,传统单体数据库替换的紧迫需求而言,大量的事实已经证明,TiDB“存”“算”分离的架构的云原生架构的数据库完全可以满足各种实际的业务转型需求:
. 对于企业在线弹性伸缩的业务发展需求,多地多中心多活的可靠性需求来讲,云原生架构无疑是最为得心应手的,因为这本就是其设计的初衷;
. 对于企业业务运行的性能诉求,首先从架构上并没有分布式架构中“存”“算”分离就劣于“存”“算”一体的技术理由;同时,近年来国际上云计算基础设施(存、算、网)的高速进展以及其上云原生数据库惊人的性能飞跃事实,也证明了云原生数据库的高性能与无限发展潜能;或许有人说“存”“算”一体同时还可以兼容单体数据库的优势,1. 试问,在新一代业务发展升级对分布式数据库提出强烈诉求的前提下,单体数据库的适配还有意义吗?2. 其实,云原生数据库厂商如果想做,也完全可以实现对单体数据库的兼容。但大多数的云原生数据库开发者并不想做这样的事情:有开发带宽为什么不用在更有意义的进展上呢?
. 对于从传统数据库时代就一直强调的、CPU 级别的多租户功能,试问: 在现阶段 K8S 容器化云计算标准环境进展普及如此迅猛的时代,这个级别的多租户还有意义吗?其实还是同样的逻辑,这样的功能开发也并不困难,云原生的厂商应该也不会把带宽优先放到这里来;
. 对于企业降本增效的诉求,“存”“算”分离不但可以各自根据“计算”与“存储”不同的发展速度(多数情况下各有增长快慢)与不同的服务级别要求(有的是计算要求高,有的是数据量大)灵活设计各自的方案规模,同时,对于脍炙人口的通过数据压缩“降本”,很明显也是“存”“算”分离能够真正产生降本的实效,因为它可以把“降本”与“增效”分开来看,而不是“降本”的同时必须“降效”,那这种降本的意义就会大打折扣。
例子还有很多 …….
还有一个比较重要的方面: TiDB 一直认为自己最开始并不是面向开发一个数据库而设计的,其最初的价值观就是提供未来社会的新一代“数据服务平台”,因此它更加需要一个“存”“算”分离的设计架构,而不是传统数据库领域最常见的存算一体。
最后还有一点需要强调:除了 TiDB Cloud 之外,对于其它将“云”策略当成技术与业务核心发展战略的企业来讲,云原生架构无论是面向现在与未来,自然是最为适合的;
或许可以这样说,“存”“算”一体的架构是现代分布式数据库技术进化过程中的一个重要过渡阶段,其历史作用不可否认,毋庸质疑;而不久的将来,以 TiDB 为典型代表与先行者的分布式数据库架构向云原生快速发展普及的趋势将会越来越明显,步伐将会越来越加快 ……
世界潮流,浩浩荡荡;顺之者昌,逆之者亡,顺应历史的潮流与趋势的选择一般都是明智的。
版权声明: 本文为 InfoQ 作者【TiDB 社区干货传送门】的原创文章。
原文链接:【http://xie.infoq.cn/article/6344636a6423c360a1d46993e】。文章转载请联系作者。
评论