您如何在无服务器架构中平衡 nosql 存储和缓存?

How do you balance nosql storage and caching in serverless architectures?

我正在为无服务器环境 (aws) 编写基于 go 的应用程序。对编写应用程序级代码还很陌生,而且我有基础架构背景。

我知道缓存不是持久的,但我真的需要关心真正的无服务器环境中的持久性吗?从需求的角度来看,简单的 dynamodb 表可以满足我的存储需求,但缓存会给我更好的性能,对吧?而且我需要性能,这是我为应用程序使用 go 的一个重要原因。

您可以选择 AWS ElastiCache(redis 或 memcache),但这并不是真正的无服务器,因此可能不是一个选择。

A​​WS Lambda 允许您在 /tmp 目录中写入,并且您可以在内存中缓存一些内容。不过,我 推荐该选项。 Lambda 并不总是 运行 在同一个实例中,所以你根本无法保证下次调用 Lambda 时你会在 /tmp 目录中找到一些东西。

看看Amazon DynamoDb Accelerator (DAX),它在DynamoDB 前面提供了一个高可用的缓存。