vlambda博客
学习文章列表

技术普及:Serverless Database有什么优势,和RDS有何区别?


无服务器计算(Serverless Computing)正在成为云服务商竞争的一个新焦点,并且已经渗透到数据库领域。进入2022年,这一势头并未见缓,特别是云巨头AWS展现出了对无服务器计算的热切关注。


去年11月在美国拉斯维加斯举行的AWS年度re:Invent大会上,AWS就发布了一系列Serverless 云分析服务(Kinesis、EMR、Redshift和MSK),近日在美国旧金山举行的AWS Summit上又宣布了Amazon Aurora Serverless v2。Serverless Database到底有什么好处?为什么各个云服务商积极跟进?


Serverless云服务始于 AWS Lambda,它让用户无需预置或管理服务器即可运行代码。AWS Lambda 是FaaS(Function as a ServiceS)的一个示例,随后Microsoft Azure 和 Google Cloud 也迅速跟进,推出自己的FaaS服务。后来,各个云提供商都开始以无服务器的形式提供其他服务。Serverless服务是一种新的交付云服务的方式。在实践中,同样的工作负载如果采用无服务器架构通常只要更小配置的服务器就能完成。


何谓Serverless Computing


Serveless Computing直译就是无服务器计算,但并不意味着不使用服务器,而是指不必订阅服务器,也不必配置和管理服务器。


当请求Serverless服务时,云提供商会从资源池中分配一个实例(虚拟机)或 pod(通常由 Kubernetes 管理)来响应这个请求。当Serverless服务代码退出时,分配的资源也将返回池中。通常,根据CPU性能、分配的RAM大小和运行时间来为使用的资源付费。


无服务器计算函数和服务可以相互调用,也可以调用其他服务,并且可以写入共享文件系统和数据库。无服务器函数的最大技术优势之一是其极高的可扩展性:与很容易被流量峰值淹没的预配置服务器不同,新的无服务器函数实例会在需要时启动,在不需要时自动返回池中。


如果有请求进来,而池中并没有适当大小的实例(或 pod)时怎么办?此时云服务商会为这个请求创建一个新的实例。这会导致响应该请求时出现一些延迟。如果应用程序对延迟非常敏感,那么可以付费让一些函数保持初始化状态并随时准备好响应需求,AWS 称之为预置并发(Provisioned Concurrency),其他云服务商使用不同的名称,但它们的办法都是预先创建一些实例预热以减少延迟。


无服务器函数和服务通常具有高可用性。如果您使用单个服务器、虚拟机或容器来运行服务,因机器或数据中心故障而导致服务中断的可能性是很高的,而云服务商通常在每个服务区(Zone)的多个可用区(数据中心位于不同物理位置但地点靠近)都有冗余能力可以保证无服务器函数的运行。


除了来自云服务商的无服务器函数和服务之外,还有许多与云无关的框架和 SDK 可用于创建无服务器应用程序,其中包括 Kubeless、Pulumi、OpenFaaS、OpenWhisk 和无服务器框架。


何谓Serverless Database


根据 Cockroach Labs 的 Jim Walker 的说法,无服务器数据库遵循九个核心原则:


1. 几乎不用人工管理服务器

2. 根据应用程序和服务规模自动进行扩缩容 

3. 原生的弹性和容错服务

4. 始终可用,随时可以访问

5. 按使用量付费

6. 任意级别的故障恢复

7. 区域规模

8. 事务保证

9. (如关系型SQL语言般优雅)


原则 1~5 适用于任何Serverless服务,但原则 6~9 只适用于SQL数据库。9 原则似乎偏向于分布式 SQL数据库,例如 CockroachDB,这也是该条添加扩号的原因。


访问数据库的传统方式是建立从客户端到服务器的持久 TCP 连接,但这并不适合Serverless Database,因为建立TCP 连接比较耗时。理想情况下,客户端应该几乎立即(不到 100 毫秒)就能和Serverless建立连接,对于简单查询能在1秒钟内获得响应。一些Serverless Database(例如 Amazon Aurora Serverless)支持 HTTP(最好是 HTTPS)连接,为了满足扩展性需求还有一个连接池,确保需要建立连接几乎都是即时的。


Serverless Database为什么省钱


传统数据库是根据最大的预期查询负载和存储容量来配置资源的。如果数据库可以在不需要数据迁移的情况下进行扩缩容,用户就可以在流量大时调高 CPU 而在流量少时调低 CPU 来节省资金。


Serverless database通常根本不需要调整大小。如果不提交查询,也就无需支付任务 CPU 费用,而此时您将获得与查询需求一样多的数据存储容量,最后按使用的存储量乘以数据库处于活动状态的时间收费。当然,您仍需为数据存储付费。根据 Amazon 的说法,与按数据库峰值负载配置容量的成本相比,使用 Aurora Serverless 可以节省高达 90% 的成本。


Serverless database推荐的使用场景是工作负载不稳定或者不可预测、企业多数据库管理、SaaS应用程序以及被拆分为跨多个服务器的横向扩展数据库。


如果数据库的负载可预测、比较稳定那么采用传统服务器可能性价比更高一些。如果负载类型是工作日繁忙而周末和节假日很空闲,以至于周末和节假日都能关闭服务器,那么数据库通常也最好使用服务器部署模式而不是Serverless服务。当然,最终需要对使用情况进行严格的计算来确定收费,但大体可以根据定价表和使用模式来确定哪种方法更合算。


几种主流的Serverless Database


目前,AWS、Azure、Google都已经推出了Serverless Database。比如,AWS 的Aurora Serverless、DynamoDB、微软的Azure Synapse Serverless、CockroachDB 的CockroachDB Serverless、Google的Cloud Firestore 等。


Amazon Aurora Serverless v2 目前处于预览阶段,可在几分之一秒内立即从数百个事务扩展到数十万个事务,Amazon Aurora Serverless v2 与 MySQL 兼容。


Amazon DynamoDB 是一个完全托管的Serverless键值 NoSQL 数据库,旨在以任何规模运行高性能应用程序,其内置了安全性、连续备份、自动化多区域复制、内存缓存和数据导出工具。


Azure SQL Database Serverless是Microsoft SQL Server的一个版本。它可根据负载自动扩缩容,并根据使用的计算量计费。SQL Database Serverless还会在数据库非活动期间暂停数据库(此时仅对存储计费),一旦有请求再自动恢复数据库。


Azure Synapse Serverless 允许使用 T-SQL 从 Azure 中的数据湖中查询数据,而无需提前预配资源。同样,只需为执行的查询付费,其定价基于每个查询处理的数据量。


Google Cloud Firestore属于Google Firestore中的一部分,它是一个NoSQL、面向文档的无服务器数据库。与关系型数据库不同,Cloud Firestore 没有表或行。相反,它将数据存储在文档中,这些文档被组织成集合,每个文档都包含一组键值对。


CockroachDB Serverless目前处于测试阶段,由与PostgreSQL兼容的Cockroach Labs 云提供。它可以在多租户配置中使用 AWS 或 Google Cloud 上的高可用性集群。


另外,MongoDB Atlas在预览中也提供了Serverless实例。



欢迎关注数据星观察科普系列文章









更多信息见:http://www.datavers.cn/ (阅读原文)


数据星球正在筹建数据库专委会,如果你对加入数据库专委会有想法,欢迎勾搭小编