问题来了,大家可能觉得闲时按最小 0.25 CCU 计费也还是多了,于是我们推出无使用无费用的功能。
10 分钟没有收到用户连接,就将回收计算节点,转为暂停的实例。暂停的实例收到用户请求后,启动计算节点,恢复为运行中的实例。
我们通过监控计算的连接数,没有连接则向管控发起暂停。
暂停后,我们回收了计算层所有资源,不再对计算资源收费,仅对存储资源进行收费。接入层收到用户请求后,管控则会启动实例,提供给用户访问。
这当中比较重要的是恢复时间,也就是冷启动时间。在恢复时间上,我们做了相当多的优化,包括找持久化的日志位点以及 BP 和事务系统的初始化。目前,恢复时间能做到仅需2秒。
有的读者可能会感兴趣计算存储分离的架构细节,接下来简要分享一下架构细节。
在计算层,我们使用的是的 TXSQL,完全兼容 MySQL 协议,能够复用社区的 bugfix 和特性。主从复制使用 redo 复制,优点是延迟低。redo 日志不落在本地,而是发送给存储层。
在存储层,我们使用的是云硬盘的 HiStore 存储平台,保障了数据安全、GB 级别的备份回档、以及性能与成本的多种存储选择方案,我们在 HiStore 中加入数据库的逻辑,实现日志回放以及算子下推。
大家如果不熟悉数据库也不要被这个这些名词吓到,我们对外其实就是提供的是与 MySQL 一致的数据库服务,区别是内部我们做了计算存储分离,分离之后计算层的资源可以更自由、灵活地分配。
三、应用场景
应用场景是广大开发者比较关心的,接下来给大家分享六类场景的实际应用。
1. 慢查询
当开发者的 SQL 优化得不够好,或者偶尔需要全表扫描分析数据时,就会出现慢查询,与慢查询相伴的往往是 CPU 使用率高(因为扫描的数据比较多)。
这也是用户能切实感知到的,从上图的监控中可以看到慢查询与 CPU 是正相关的。如果用户购买一个比较大的固定规格的实例,那么将承担额外的成本;如果购买的是小规格实例,那么在慢查询到来时用户的 CPU 会被占满,进而影响业务。使用Serverless 数据库就不用担心这个问题,大部分时间Serverless 数据库以低 CCU 进行付费,慢查询来临的时候可以立刻用到额外的 CPU,所以整体上也只是影响慢查询时刻的计费。
2. 定时任务
如果长时间不用数据库,就不用对 CPU 和内存进行收费。这类通常见于一些档案数据库、机器学习的样本数据库、个人家庭的历史传感器数据库等,不会经常使用,而是偶尔访问的状态。这类数据的常见的做法是直接存在 COS 里,需要的时候去下载。而Serverless 数据库有一个很大的优点就是需要的时候立刻能够提供索引,且拥有强大的分析功能,开发者不需要自己去写代码就能搜索到需要的数据。
4. 低频访问的业务