腾讯云 TDSQL-C Serverless 研发负责人杨珏吉发表主题分享

2024-11-12
来源:网络整理

作者 |杨觉吉

作为国内首个云原生数据库,-C 目前仅在微信生态上就为超过 50W 的小程序开发者提供了数据库底座,凭借其按量付费、超强弹性、存算分离等功能,可以有效降低用户的数据库成本。

与传统数据库相比,腾讯云 C 有哪些技术突破?您在情景练习的过程中遇到了哪些问题?以及如何解决呢?在 2022 全球架构师峰会(深圳)上,腾讯 -C 研发负责人杨觉吉发表了《50W+ 小程序开发者背后的数据库降本增效实践》的主题演讲,重点介绍了 -C 在关键技术上的多维度突破、实际应用中遇到的挑战和解决方案,以及内外部用户业务上云过程中的典型应用场景和收益。

1-C 的技术实施和自主开发的业务实践

-C 是腾讯开发的云原生数据库。-C 是一项服务,允许公司像使用水、电和煤一样使用云数据库。用户无需为闲置的数据库付费,他们想用多少就用多少。这项技术可以帮助企业在许多业务场景中实现显著的成本节省。

-C

传统云数据库不自动扩缩容,按量付费,无使用费。因此,即使我只使用了 10% 的计算资源,其他 90% 的空闲计算资源也无法分配给其他用户,我必须为此付费。存储资源也是如此,基于这种存算绑定架构,用户需要提前购买相应的 CPU 和内存数据库,即使没用,也需要付费。

另一方面,-C 将计算和存储分开。下面是存储层,如果存储层不够,我们可以通过增加机器和存储来实现横向扩展;如果计算资源不足,也可以根据自己的需求动态扩容,无需关心存储层是否满。算存分离后,各部分资源都可以根据自己的需求进行分配。

我给你举个例子,现在我们面前有两栋房子,一栋是两间卧室,没有客厅;另一个是两居室的公寓,客厅有电视,方便我们一起玩游戏,所以一个月要多花2000元。但问题是我不是每天都玩游戏,我只有周末的时间玩。这是现实中经常遇到的困境。如果此时有传送门,我可以直接从房间传送到客厅,每小时 10 块钱,这个问题解决了吗?

如果我的两个房间旁边有游戏厅怎么办?这个街机也能解决我的问题吗?这样我就不必处理门户。其实很难,如果这个游戏厅只适合你,它迟早会倒闭。其物理位置的限制使其无法为更多人提供服务。所以从本质上讲,它要么为足够的人提供服务,要么很昂贵。实际上,如果拱廊就在您的房间旁边,您的租金将比其他任何地方都贵。

将计算与存储分开是将房子与客厅分离。只要解决了送货问题(自动缩放),房间的成本就可以恢复到自己的价值。虽然 在物理上并不存在,但我们 -C 做了一个 ,它是一个计算-存储分离的架构,让所有的计算节点和所有的物理层,所有的存储层都可以互相访问。

-C 腾讯内部有很多应用场景,这里举两个典型的例子跟他聊聊:

-C 微信小程序中的应用

微信小程序开发面临的问题:

基于以上问题,微信和腾讯云联合推出了微信云托管服务。简化小程序开发运维流程,开箱即用,按用收费,不用就用。它可以大大降低开发人员的成本。

在实施整个架构时,腾讯云托管遇到了数据库选择问题。原来选择云托管后端自行刷数据库,所有小程序访问同一个数据库,被不同的数据库隔离。这种方案隔离性差,安全性差;后来,选择了 -C 方案来解决问题,每个小程序都有自己独立完整的 -C 数据库实例。

-C 腾讯乐翔

腾讯乐翔是腾讯的内部论坛、文档等,已经为腾讯员工服务了 10 多年。下图是腾讯乐翔的架构图。

不同的员工通过外部应用防火墙进入 CLB,然后进入腾讯乐翔的业务逻辑层。这是一个典型的 SaaS 服务架构。因为需要面对不同的企业用户,所以需要隔离数据。同时,许多 ToB 企业用户较少,不经常使用数据库,导致整体负载较低。经过多次成本优化后,腾讯乐翔将把很多低负载客户合并到一个数据库实例中,成为和之前的微信云托管一样的架构。同样,它也将面临云服务器资源的浪费。最后,使用了 -C 而不是原来的云数据库。-C 数据库最大的优点是计费与负载强相关,负载越高,计费越高,负载越低。更换后,腾讯乐翔将数据库成本降低了 80%。

2-C 数据库功能及其他场景下的应用实践

-C 数据库的三大特点是:自动扩缩容、按量付费、无使用费。我们希望当您需要时,这些水像瀑布一样倾泻而下,并且您不需要提前意识到它。希望云服务能像用水一样准确,并且您的账单必须来自您使用的 CPU 和内存资源。如果你不使用它,就像关掉水龙头一样,不收费。

常见的自动扩展场景

慢查询。我们的大部分业务都有慢查询,比如执行没有索引的 SQL;或者您有一个多表查询的场景;或者如果有运营同学在前端做数据分析,慢查询会导致 CPU 负载相对较高,但是如果我们买大规格,就需要承担相对较高的成本,如果我们买小规格,那么这些慢查询可能会影响在线服务。

事件场景。在活动期间会有相对较高的负载,但在活动结束后,负载会减少。同样,如果我们购买大规格,则需要承担相对较高的成本,如果我们购买小规格,那么我们将无法支持活动的使用。当然,您也可以选择在事件发生前进行纵向扩展,在事件发生后进行缩减。但一般来说,这也很不方便,而且并非所有活动都有足够的时间来计划。因此,在这种情况下,您需要自动扩展功能。

计划任务。许多企业都需要计划任务。例如,在晚上,计算当天的业务数据并将其汇总到报告中。或来自用户的账单。那么在执行这个任务的时候,会有个比较高的负载。尽管您也可以根据计划手动扩展或缩减。但是,有些计划会使用不可控的计算资源和时间。如果少了,速度慢了,也可能影响在线业务,如果多了,那就浪费了。

-C 自动缩放技术

下图为行业内常见的扩容方案

第一步是低负载的情况,CPU 使用 0.1 核,pool 使用 1G,其他内存为 100M。第二步,用户来加载,即在高负载触发扩容之前,CPU 分配 1 个 core,其他内存 500M。然后,在第三步中,高负载触发扩容后,CPU 使用 1.8 核,池 2G,其他内存 500M。

但这满足用户的需求吗?其实不是。因为从第二步到第三步,必须要有持续监控才能发现它超载,如果发现超过阈值,就会自动扩展。例如,在高负载下扩展容量需要 5 分钟。而且还是分层的,比如我最小 1 核,最大 16 核,如果是阶梯式扩容,一开始需要 16 个核,你得反应 4 次才能扩容到 16 核,当扩容完成时,活动结束。另一个示例是,某些报表是在一两分钟内计算出来的,并且扩展为时已晚,无法触发。因此,这种扩展根本无法满足业务需求。

我们考虑过找到一种方法,将 5 分钟的扩展时间减少到 10 秒或更短。但后来我们决定不这样做。我们就把规格调到最大,就是如果最大规格是 2 核 4G,我们将直接扩展到 2 核 4G。用户可以从 1.8 个内核开始,然后我们进行内存自动扩展,同时不断监控此 CPU 上的高负载。

常见业务场景的计费方式

大致计费。这种计费方式其实非常人性化。假设我只有 0.6 个内核,但我必须为 1 个内核付费。如果我控制不好,如果我使用 1.1 个核心,则需要支付 2 个核心的费用。

小型实例。市面上有很多小型数据服务,它们的负载不到 1 个核心。但是,市场上的大多数数据库都提供 1 个内核的最低规格。目前市面上的微服务很多,对应的数据库也非常小。

-C

我们每 5 秒对资源使用情况进行一次采样,计算单位为:CCU(-C Unit) = max(CPU, MEM/2, )。计费基于实时 CCU。为了保证按量付费,我们做了一个算法,可以保证计算是根据您使用的资源,账单也会每时每刻反映您的资源使用情况。

常见的免用、免费场景

存档数据库。例如,在发表一篇论文时,需要存储大量的训练数据,然后你需要访问这个数据库来检索其中的训练数据进行实验。这个时候 CPU 会用很多,但是我写完论文后,基本不需要用数据库,就是归档数据库的场景。

不频繁访问的服务。个人博客、垂直论坛、微信小程序等场景。如果每天只有十几个或二十个请求,我们按 0.25 个核心收费是不合适的。

开发测试环境。它们中的大多数仅在工作日的白天使用,很少在周末和晚上使用。在这种情况下,完全可以在不使用时关闭数据库。

-C 不使用它是如何工作的

用户通过接入层访问我们的计算层,计算层通过存储层获取数据并返回给用户。管控平台负责监控计算层和存储层的 CPU、内存、存储量等资源消耗情况,并进行计费。如果 10 分钟内没有请求,我们将通过治理层回收计算层的资源。当新的 SQL 来临时,接入层可以感知并通知管理平台恢复,然后开始计算资源。

这里的一个重要指标是从暂停到重新启动的时间。我们花了大量时间来优化这个冷启动的时间。目前大约需要 2 秒,我们计划在未来这样做。

3 未来展望

我们希望使数据库服务与水资源相同。让初创企业用这些水来灌溉他们的农田。到目前为止,我们已经做了一些工作,将来还有更多工作要做。如果中小企业是沿溪流的农田,那么我们在 -C 的愿景是建造一座水坝来管理上游的水资源并灌溉下游企业。

关于作者:

杨觉吉,腾讯云高级工程师,-C 研发负责人,拥有多年的云数据库研发经验,负责 -C 产品形态的设计与开发。

电子书推荐

2022 年,数字化转型成为全行业关注的焦点,数字经济的价值进一步凸显。云计算作为数字时代的关键要素之一,在行业数字化解决方案、产业链数据流、动态资源配置和商业创新等方面发挥着不可估量的价值。

为了帮助更多的中国互联网行业同仁了解云计算领域最前沿的趋势和实践,腾讯云连续两年推出“腾讯云技术实践大藏”,其中包括腾讯云最新的实践经验和研究成果。2022 技术实践文集涵盖云原生、大数据、数据库、中间件、基础设施等热门技术领域,近 10 万字的技术汇编和 26 位专家的见解。扫描二维码获取所有精彩内容!

分享