Serverless 应用采用不同的存储方案,性能如何差异?

· 约 6 分钟读完

近些年,Serverless 架构已成为前端开发者的热点话题,它的弹性、高效、低成本等特性有助于解决许多传统云计算架构的痛点。而在 Serverless 应用中,数据存储是不可避免的问题,这篇文章主要探讨 Serverless 应用采用不同的存储方案,性能如何差异的问题。

存储方案

在 Serverless 应用中,常用的存储方案主要有下面几种:

  1. 云数据库:比如 AWS 的 DynamoDB、Azure 的 Cosmos DB 等。

  2. 对象存储服务:比如 AWS 的 S3、阿里云的 OSS 等。

  3. 缓存服务:比如 AWS 的 ElastiCache、阿里云的 Redis 等。

  4. 服务间的消息队列:比如 AWS 的 SNS/SQS、阿里云的 MNS 等。

不同的存储方案在使用上有垂直和横向两个方面的差异。垂直方向上,一个存储方案可以支持多种数据类型和增删改查操作;横向方向上,存储方案在各个数据存储规模和并发请求量上有不同的适用场景。下面我们来探讨一下常见存储方案之间的性能差异。

性能差异

读写性能

云数据库、对象存储服务和缓存服务对于读写操作的性能表现会受到影响的因素不同。在没有负载的情况下,三者的读性能大约为 1 秒处理 3000 次请求,写性能由于需要同步写入多个节点,稍微慢一点,大约是 1 秒处理 2000 次请求。

但是,当并发请求量增大的时候,这个表现会受到很大的影响。云数据库在面对高并发读写请求的时候,除了使用内部缓存、批量读写等优化方式外,往往需要进行分片和复制等技术优化。

而对象存储服务和缓存服务在高并发读写请求的时候,优化方式主要是基于异步读写和分布式改写,它们更适合处理大量的小文件、大量的一次性流量和高速的缓存请求;而云数据库则更适合处理基于表结构的事务性数据、文本文件等需要频繁单个读写的场景。这也从另一个方面反映了 Serverless 体系化的存储方案选择的重要性。

存储成本

在存储成本上,不同存储方案也有相应的差异。AWS 的 DynamoDB 基于不同的存储类型提供的读、写、存储服务在费用上差别较大。例如,对于热门访问的数据,在付费的条件下使用 DynamoDB 的 SSD 存储类型较为划算;对于冷数据或者备份数据,使用机械硬盘存储类型可以更大程度的降低存储成本。而 AWS 的 S3 对于高频访问的数据,支持了 IA(低访问)和 Glacier(远期归档)等多种存储类型,让储成本降至最低。

同样的,阿里云的 OSS 和 Redis 也会针对不同的存储要求提供不同的服务成本,比如低频访问的 Vault OSS 支持的是按照最低月结算,根据文件数量和文件的存储时长计费;而高频访问的 SSD-云盘则需要对 IOPS 和存储空间进行成本计算。

示例代码

指导意义

在 Serverless 应用中,数据存储的选择是一个非常重要的决策,存储方案的性能和费用直接影响着应用的整体运作和开发成本。因此,我们需要从业务逻辑、使用场景、存储性能等方面作出全面的考虑方能做出合适的存储方案选择,更是为 Serverless 应用的优化提供了切入点。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67c98d5ae46428fe9e12bc74