能否掌控复杂性,是一个分布式数据库生存下去的唯一方法

2022-10-09 10:23:17 浏览数 (1)

2022 年 9 月 22 日,企业级开源分布式数据库厂商 PingCAP 用户峰会在京举行。参会的有PingCAP和其重量级客户、合作伙伴及产业大咖。我应邀在线参加了会议。

在会议上我听到了PingCAP的创始人兼CEO刘奇的观点:“分布式数据库是一个高度复杂的系统,和云的结合使得复杂性进一步提升。分布式数据库能否存活下去,取决于能否掌握复杂度。”

这个观点我觉得还是很有道理的。分布式数据库相对于单机版的数据库来说,其复杂性是指数级增长的。具体来说,一方面,数据会被存储在不同的机器上,另外一方面,很多查询执行的时候,往往需要在不同的机器之间挪移数据。此外,分布式数据库往往有一套复杂的机制去保持写一致性。加上分布式数据库还要处理查询数量和表数据不断增长,动态变化的业务量等等,这都造成了分布式数据库相对单机数据库来说,要复杂很多。

TiDB是一套存算分离的分布式数据库架构,存储和计算层可以进行水平扩展,TiDB的OLTP和OLAP之间又做到了存存分离,物理隔离,MPP的OLAP架构保证了在海量数据下的并行计算和分析能力,加上和MySQL很好的兼容性以及极简易用的特性,使得它成为很多用户的分布式数据选择。

对不同的用户来说,如何掌握复杂性是不一样的。而TiDB对不同客户对复杂性的不同需求都有了很好的满足。

在用户大会中发言的百胜中国CTO张雷女士表示,对餐饮行业来说,交易往往存在明显的高低峰场景。比如说,目前百胜中国在做的肯德基营销活动“疯狂星期四”,就会导致星期四的交易量远远大于平时。

面对张雷CTO描述的这种场景,TiDB相比较很多分布式数据库产品就有很明显的优势。得益于TiDB一开始就选取的基于谷歌Spanner的分布式架构,并进行存算分离,TiDB有非常灵活的水平扩展能力。TiDB可以根据业务的需要很快对计算资源进行调整。TiDB又完全和MySQL兼容,极简易用。这样一来,就可以很好节省计算资源,降低成本。

这种能力在其他分布式数据库系统上要想达到同样的效果,就几乎是不可能的了。比如说,某著名的分布式数据库,采取的是静态的分区分表,即使业务流量发生明显的变化,除非人工进行手动的重新分区分表,否则系统也无法有效调整对计算资源的需求。因此,TiDB的这种非常灵活的水平扩展能力,对百胜中国来说,就是一种很好掌握复杂度的体现。

如何掌握复杂度,对老虎国际来说,又更加的复杂一些。在本次大会上,老虎国际的技术副总裁柳锴讲述了他理解的"掌握复杂度"。

老虎国际的业务,相对于餐饮行业要复杂多了。不仅仅业务复杂,而且老虎国际是一家业务遍布世界各地的公司,不同地区的合规要求也不一样。这就决定了老虎国际的技术架构本身是一个公有云+私有云的混合云结构。

TiDB首先是一个扩展性很好的分布式数据库,可以通过低延迟,高一致性保证数据安全,解决老虎国际复杂的业务需求。

不仅仅如此,PingCAP本身也是一家国际化的公司,比如说TiDB在欧洲就拿到了GDPR的许可,这样一来,老虎国际的欧洲业务就可以使用TiDB而不用担心GDPR合规的问题。

加之老虎国际采用了公有云+私有云的混合云结构,而PingCAP的云战略是云中立策略,在海内外各大公有云上都提供托管的TiDB云服务。所以这些东西结合在一起,TiDB就可以有效管理复杂度,解决老虎国际的业务需求。

我们可以认为,使用云上托管的TiDB云服务,也是一种帮助用户掌握复杂度的方式。TiDB Cloud 作为一种云中立的云服务,自2022年5月正式商用以来,已经为全球众多用户提供了全托管的云数据库服务。

云服务是服务化的一种体现。PingCAP的创始人兼CEO刘奇表示,数据库的未来是服务化,而PingCAP的目标是将数据库的任何可分离的组件都实现服务化,打造PB级在线数据服务平台。

如果可以做到这个,那未来会有一种全新的数据处理和访问形式。有个词叫Serverless可以用来形容这种形式。通过PingCAP提供的非常方便易用的DATA API,企业级用户,只需要关心自己的业务,再也不用在意自己的数据存在哪里,怎么存,性能是不是有问题,有没有扩容的需求等等。

这应该是数据处理和访问的未来。要实现这个未来,非常的不容易。TiDB是一个PB级别的可扩展的数据库。如果要做到这样的serverless服务,提供DATA API,唯一的选择就是要拆分所有可以拆分的服务,让TiDB这个分布式数据库真正做到微服务化,让每个服务都有自己单独的水平扩展和收缩的能力。

但是我相信如果TiDB都没办法做到这一步的话,那么其他的分布式数据库要做到这一步会更难。因为TiDB的数据库架构,从一开始就设计的比较符合现代云端的分布式系统,不同的组件之间的耦合程度就不是很紧。这和其他的分布式数据库还是有明显的区别的。

TiDB需要做的就是进一步的拆分它的各个组件,让每个组件都成为单独的服务,可以在云端单独部署水平扩展,可以做到自动化的伸缩。这种全自动化的能力是serverless的关键。

这样,用户就不需要担心底层的硬件到底需要怎么配置,只需要关心并聚焦在其业务逻辑上。只要用户的业务逻辑处理好了,数据管理相关的也自动适配了。

从业界来看,包括AWS的Aurora在内,大家都在往serverless走,所以我觉得大势所趋。这也是PingCAP的创始人兼CEO刘奇觉得的数据库未来的发展方向。

掌握复杂度,还体现在客户对产品的现在和未来发展路径的把握程度上。TiDB选择的方式是通过自主开源,和客户建立起信任的起始点。PingCAP从成立之初就以开源作为核心战略,通过开源吸引了全球1895位贡献者,覆盖了45个国家和地区。

开源不仅仅吸引了很多的企业加入到TiDB的社区里面来。更有一些企业已经把TiDB作为他们自己的上游版本,然后通过TiDB构建出自己的发行版,服务于他们自己的客户。

比如说,平安科技和PingCAP联合打造了TiDB的商业发行版UbiSQL。双方通过合作在实现研发能力、解决方案能力与交付运维能力进化的同时进一步适配金融场景的需要,完成科技输出的突破,达成 1 1 > 2 的效果。

通过开源的方式,建立用户信任,让用户深入参与到TiDB这么复杂的系统的开发和发行中来,帮助他们去服务他们的客户,也是客户掌握复杂度的体现。

总之,能否掌控复杂性,是一个分布式数据库生存下去的唯一方法。而TiDB无论从架构,服务化,还是从开源等方方面面,都能够很好帮助客户掌握复杂度,用好分布式数据库系统。

0 人点赞