你听过多少款无服务器架构(Serverless)数据库?
什么是Serverless呢?简单理解,Serverless 分为FaaS 和 BaaS 两个部分,其中 FaaS 指的是函数即服务,BaaS 是后端即服务 。
举个例子,用户浏览网页,可能涉及CDN资源 。如果是静态内容,从对象存储下载照片、视频;如果是动态内容,则触发一个函数计算,云函数将从云数据库获取相应的资源 , 生成用户所需的动态内容 。其中,云函数为 FaaS,对象存储和云数据库则为 BaaS 。
文章插图
传统的云数据库会提供多种内存/CPU规格给用户购买 。即使无法时刻用满负载,用户也需要为选中的规格付费 。大多数客户在购买数据库服务时,只能根据历史经验来推测需求规格,无法准确判断业务未来的发展趋势 。也是,咱们没有天眼,谁知道什么时候能被时代选中呢?
不过,咱还是要默默的问自己一声 。万一爆红,你的数据库做好准备迎接业务访问量暴涨、计算或存储的需求量激增了吗?
不打算爆红的企业不是好企业,抱着一颗要爆红的心,大多数的企业会选择比真实需求稍微偏大一些规格的数据库服务 。在没爆红前,这就是存储、计算资源的浪费,也是哗哗的银子在流淌 。当然也有很多务实的企业,计算的近乎精准,可还是避免不了资源的灵活规划问题,如某一时刻突然业务访问量暴涨,对计算或存储的需求量激增,也容易出现实例资源不够、规格太?。枰艏崩┤?。
那,用户当然要问了,到底我要选择多大规格的呢?在 TDSQL-C 这儿,完全不用纠结 。
Serverless 服务是腾讯云数据库自研的新一代云原生关系型数据库 TDSQL-C MySQL版的无服务器、全 Serverless 架构版 。TDSQL-C 推出的 Serverless 服务基于计算与存储分离的理念,满足了客户在公有云计算环境下根据业务发展弹性扩展集群的刚性需求 , 让用户不再纠结实例资源问题 , 让用户像使用自来水一样使用数据库 。总结其特性,可分为以下三点:
- 自动扩缩容:用户不需要过度关注规格,访问量上来时自动扩容 , 降低时自动缩容,且实现扩缩容的过程中做到业务无感知;
- 实用实付:按秒计量,按小时结算,按照实际使用的资源付费;
- 不使用不计费:如果没有访问,不应该收费,帮助业务极大程度地节省成本;
一、头脑风暴在一些极限的测试场景下 , 实例会频繁的自动启停,这时候如何保证实例停止后快速恢复呢?如何保证在恢复实例时无需用户重复链接,直到恢复访问?
站在用户的角度考虑,谁都不希望数据库每次启停都耗费大量的时间,更不希望在这个过程中对业务有任何的影响 。因此,极致压缩冷启动时间,做到链接不断转发请求的能力相当关键 。
为了实现这一能力 , 我们做了众多探索 , 最后选定了通过在接入层增加一个恢复感知器来实现秒级冷启动这一方案 。同比于通过 proxy 来实现链接的保持和转发能力的方案 , 我们采用的方案更加贴合 Serverless 服务为用户提供低成本的理念 。这是因为采用 proxy 模式需要支付额外的成本,整体设计会更加复杂,并且还需要设计多租户的能力 。
二、建连流程接下来,我们将详细解读 TDSQL-C Serverless 服务是如何实现通过接入层来实现恢复感知服务这一方案的 。
这一方案的核心要点是在 TDSQL-C 的接入层增加了一个恢复感知器(下文简称:perceptron) , 通过perceptron 模块来实现请求转发 , perceptron 在和客户端握手之后 , 不断开与用户连接,恢复实例后,与 TDSQL-C 握手,后续转发四层报文 。以下为 perceptron 与 TDSQL-C 建连的具体过程:
文章插图
在实例暂停的状态下,如果有连接发起时,MySQL 客户端首先会同 preceptron 进行 TCP 握手(P0) 。
文章插图
完成 TCP 握手之后,preceptron 会向客户端发送 “随机数 A” 进行挑战(P1),MySQL 客户端用自己的账号密码和 “随机数 A” 来计算并回复自己的 “登录解答 A”(P2) 。
推荐阅读
- 假期快结束了,孩子还是沉迷游戏该怎么办(沉迷游戏的真实例子)
- 【lwip】11-UDP协议&源码分析
- 👍SpringSecurity单体项目最佳实践
- 百变大侦探食物大战酱汁剧本杀真相答案详解
- 想不想修真一品忘心丹丹方获取途径说明
- 想不想修真长生果获取方法详解攻略
- 《火影忍者》:二代火影真正的死因是什么为什么说是不会解开的迷题
- 红米Note11真机曝光_红米Note11外观详情
- 天地劫英雄本色天诛案真相答案参考
- 真我gtneo2t有没有nfc_真我gtneo2t支持nfc功能吗