“假如说中小企业是一片片沿溪而耕的农田,那么咱们的愿景便是建一座大坝来办理好上游的水资源,来灌溉下流企业。”

腾讯云数据库高级工程师杨珏吉说这是他投身数据库领域的初衷。初创企业、中小企业在数据库层面的最大需求便是低本钱。助力企业降本增效是腾讯云数据库一直在努力的方向,尤其在疫情冲击下的经济社会中,更是一份社会责任。

在技术上深研,打破极致弹性,让客户像运用自来水相同的运用数据库,用多少、怎样用由客户决议,计费由运用量决议,这是杨珏吉及其团队给出的答案。TDSQL-C Serverless 数据库经过运用核算存储别离架构,完成主动扩缩容、按运用量计费、无运用无计费功用,从而完成大幅下降本钱,下面将具体介绍功用完成背后的架构原理及应用场景。

点击此处观看完整版视频

一、产品特色

如何像用自来水一样使用数据库?|腾讯云数据库TDSQL-C

Serverless 分为 FaaS 和 BaaS,其间 FaaS 是函数即服务,也便是咱们熟悉的云函数,可以了解成是云主机的一种笼统,免去了杂乱的运维,帮助开发者主动扩缩容,完成服务的高可用,并按运用量计费。

BaaS 是后端即服务,比方对象存储,它也免去了开发者的文件存储办理的担负,能供给足够的弹性才能,完成依照运用量计费,所以它也满意 Serverless 的要求。

现在云数据库的售卖方法仍是与云主机相似,开发者需求购买一个固定标准的云数据库,比方CPU 4 核内存 8G,即便开发者没有 SQL 恳求,也将依照 4 核 8G 进行计费。

如何像用自来水一样使用数据库?|腾讯云数据库TDSQL-C

业界场景的云数据库,的确帮助开发者完成了高可用和主动备份,减少了运维担负,但开发者需求提早猜测事务恳求量,并建议扩缩容,也无法在没有运用的时分不收费。

传统云数据库同机布置核算和存储,内核进程直接写本地数据文件。当一台机器的存储运用已经挨近 90%,即便整机存量实例的核算资源负载再低,也无法再分配新实例了。在这种情况下,该机器上存量实例的用户,尽管没有运用核算资源,CPU 内存都是 0,也仍然要承当此机器核算资源的费用。反过来也相同,核算运用 90%,而存储运用量较少,也将导致剩余存储无法再售卖。

按实践用量付费的问题本质是按实践用量分配资源。所以云数据库假如要迈向 Serverless 这个目标,要做的便是核算存储别离。

核算存储别离的优势很多,比方存储空间和写带宽能打破单机上限,更强的容灾才能等等,本文重点讲解资源分配弹性灵敏的特色。

核算存储别离能使核算和存储解耦,恣意核算节点能拜访任务的存储节点。核算和存储保护各自的资源池,别离最大化、最灵敏地进行资源分配。存储层按寄存的数据量收费,核算层按真实的负载收费。

另一方面,传统云数据库扩缩容需求搬家数据到另一台物理设备,所以耗时长。而核算存储别离架构,核算层扩缩容不需求搬家存储层的数据,直接分配核算层资源即可,秒级完成扩缩容

在核算存储别离之上,TDSQL-C 完成了 Serverless 产品功用的设计,让咱们来看看具体是怎样做的。

二、架构设计

如何像用自来水一样使用数据库?|腾讯云数据库TDSQL-C

上图是开发者拜访的全链路,应用程序经过接入层拜访核算层,核算层从存储层回来数据。

咱们的 Serverless 形状是运用监控核算层完成的。经过监控,咱们对核算资源进行主动扩缩容,并对该时间所耗费的资源进行计费。当发现没有恳求时,监控服务就会触发核算资源的收回,并告诉接入层。用户再次拜访时,接入层则会唤醒实例,再次供给拜访。

如何像用自来水一样使用数据库?|腾讯云数据库TDSQL-C

从客户视点总结起来便是三大特色:

主动扩缩容:根据事务负载扩缩容实例,开发者无需猜测负载并提早扩容资源;

按运用量计费:以实践运用的负载进行计费,开发者无需为自己没有运用到的资源付费;

无运用无费用:无数据恳求时,不对核算资源计费。

1. 主动扩缩容

如何像用自来水一样使用数据库?|腾讯云数据库TDSQL-C

主动扩缩容的目标是让客户可以像运用自来水那样运用数据库,既可以一滴一滴,也可以像瀑布相同倾泻地用。

开发者在购买一个 Serverless 实例时,需求指定扩缩容的范围,也便是最小和最大标准。比方开发者购买了一个最小 1 核 2G 最大 2 核 4G 的实例。咱们对 CPU 和内存约束到最大标准,也便是说 CPU 和内存不存在扩容的时间,而 Buffer Pool 根据 CPU 负载守时调整。

这是一个咱们最开始考虑的方案,也是比较业界常见的扩缩容方案。

上图纵轴表示 CPU,横轴表示内存(Mem),矩形框代表资源约束。实例闲时,就约束实例的标准为 1 核 2G,负载来暂时,CPU 迅速打满,监控发现后,再触发扩容,扩成 2 核 4G,其间缓存也是 BP 巨细也相应增加,可以看到在扩容产生之前,用户的 CPU 运用是受到约束的,约束的时间取决于触发扩容的阈值。

如何像用自来水一样使用数据库?|腾讯云数据库TDSQL-C

咱们后来采用的方案则是一开始就约束到最大标准,负载来暂时,可以一会儿运用到更多的资源,然后根据 CPU 的运用量来触发缓存巨细的更新。在这个方案下用户运用数据库可以无感知进行 CPU 扩容,并且也不会由于链接突增导致实例 OOM。

2. 按运用量计费

如何像用自来水一样使用数据库?|腾讯云数据库TDSQL-C

运用量计费的目标是秒等级的计费粒度,以及恣意单位的资源标准,比方用到 0.7 核,就按 0.7 核收费,而不是不足 1 核算 1 核。

咱们的监控室每 5 秒收集一次,收集结果统一运用 CCU(TDSQL-C Compute Unit)作为统一的算力单位,其核算方法为 CPU、内存的1/2以及最小标准三者取最大值。

以上图为例,闲时以最小标准 0.25 CCU 计费,负载来暂时以 CPU 进行收费,即为 3;当负载完毕时,内存还在释放,为内存的1/2 ,也便是 0.8。

3. 无运用无计费

如何像用自来水一样使用数据库?|腾讯云数据库TDSQL-C

问题来了,咱们可能觉得闲时按最小 0.25 CCU 计费也仍是多了,所以咱们推出无运用无费用的功用。

10 分钟没有收到用户连接,就将收回核算节点,转为暂停的实例。暂停的实例收到用户恳求后,启动核算节点,恢复为运行中的实例。

咱们经过监控核算的连接数,没有连接则向管控建议暂停。

如何像用自来水一样使用数据库?|腾讯云数据库TDSQL-C

暂停后,咱们收回了核算层一切资源,不再对核算资源收费,仅对存储资源进行收费。接入层收到用户恳求后,管控则会启动实例,供给给用户拜访。

如何像用自来水一样使用数据库?|腾讯云数据库TDSQL-C

这傍边比较重要的是恢复时间,也便是冷启动时间。在恢复时间上,咱们做了相当多的优化,包含找耐久化的日志位点以及 BP 和事务系统的初始化。现在,恢复时间能做到仅需2秒

有的读者可能会感兴趣核算存储别离的架构细节,接下来简要共享一下架构细节。

如何像用自来水一样使用数据库?|腾讯云数据库TDSQL-C

在核算层,咱们运用的是的 TXSQL,彻底兼容 MySQL 协议,可以复用社区的 bugfix 和特性。主从仿制运用 redo 仿制,长处是延迟低。redo 日志不落在本地,而是发送给存储层。

在存储层,咱们运用的是云硬盘的 HiStore 存储平台,确保了数据安全、GB 等级的备份回档、以及性能与本钱的多种存储选择方案,咱们在 HiStore 中参加数据库的逻辑,完成日志回放以及算子下推。

咱们假如不熟悉数据库也不要被这个这些名词吓到,咱们对外其实便是供给的是与 MySQL 共同的数据库服务,区别是内部咱们做了核算存储别离,别离之后核算层的资源可以更自由、灵敏地分配

三、应用场景

应用场景是广大开发者比较关心的,接下来给咱们共享六类场景的实践应用。

1. 慢查询

如何像用自来水一样使用数据库?|腾讯云数据库TDSQL-C

当开发者的 SQL 优化得不够好,或许偶尔需求全表扫描分析数据时,就会呈现慢查询,与慢查询相伴的往往是 CPU 运用率高(由于扫描的数据比较多)。

这也是用户能切实感知到的,从上图的监控中可以看到慢查询与 CPU 是正相关的。假如用户购买一个比较大的固定标准的实例,那么将承当额定的本钱;假如购买的是小标准实例,那么在慢查询到来时用户的 CPU 会被占满,从而影响事务。运用Serverless 数据库就不必担心这个问题,大部分时间Serverless 数据库以低 CCU 进行付费,慢查询来临的时分可以马上用到额定的 CPU,所以全体上也仅仅影响慢查询时间的计费

2. 守时任务

如何像用自来水一样使用数据库?|腾讯云数据库TDSQL-C

与慢查询相似,有相当多的事务都有守时处理逻辑,包含守时整理旧数据、守时生成前一天的报表等。上图可以看到,用户在每天 0 点会跑十分多的恳求,但平常大部分时间是一个低负载。用户运用了 Serverless 数据库之后,也不必去对标准和费用做权衡了,和上一个例子相同,用多少就计费多少

3. 归档数据库

如何像用自来水一样使用数据库?|腾讯云数据库TDSQL-C

假如长期不必数据库,就不必对 CPU 和内存进行收费。这类通常见于一些档案数据库、机器学习的样本数据库、个人家庭的前史传感器数据库等,不会常常运用,而是偶尔拜访的状态。这类数据的常见的做法是直接存在 COS 里,需求的时分去下载。而Serverless 数据库有一个很大的长处便是需求的时分马上可以供给索引,且拥有强大的分析功用,开发者不需求自己去写代码就能搜索到需求的数据

4. 低频拜访的事务

如何像用自来水一样使用数据库?|腾讯云数据库TDSQL-C

对于平均每天的拜访量小于 10 次的低频拜访事务,例如个人博客、垂直社区论坛、微信小程序,咱们与云函数、云开发、微信云保管有深化合作,能完成拜访完毕后就停止计费

5. 开发测验环境

如何像用自来水一样使用数据库?|腾讯云数据库TDSQL-C

上图可以看到在一周时间内,用户在晚上、周末都没有拜访和运用。用户经过 TDSQL-C Serverless 数据库的主动暂停功用,节省了很多研发测验本钱

6. 微服务场景

如何像用自来水一样使用数据库?|腾讯云数据库TDSQL-C

随着微服务越来越流行,每个独自的服务负责的功用也越来越小,随之对应的是微服务后端的数据库的负载也会变小。一种做法是多个微服务共用一个大的数据库,但这会带来相互影响的问题。所以,Serverless 数据库供给小标准的数据库实例,来确保微服务之间的阻隔性

四、总结与展望

TDSQL-C Serverless 补充了数据库领域中 Serverless 的空白。在主动扩缩容上,可以使 CPU 瞬间用到最大标准,按运用量计费上可以按 CPU 实时的运用量进行计费,不运用不计费上冷启动时间是 2 秒,现在在 Serverless 数据库中是绝对领先的。未来咱们也会在冷启动上做进一步的优化,以及帮助客户进一步下降运用本钱。