Amazon DynamoDB Accelerator 专业2017年〜
DynamoDB 的内存缓存,实现微秒级读取延迟
它能做什么
Amazon DynamoDB Accelerator(DAX)是一项为 DynamoDB 提供全托管内存缓存的服务。将 DynamoDB 的读取延迟从毫秒级降低到微秒级。DAX 与 DynamoDB 完全兼容,应用程序只需更改端点即可使用,无需修改数据访问逻辑。写入操作通过 DAX 透传到 DynamoDB。
使用场景
用于需要极低延迟读取的实时应用程序(游戏排行榜、广告竞价)、读取密集型工作负载的性能提升、DynamoDB 读取容量的成本优化(通过缓存减少直接读取)、热键问题的缓解等。
日常类比
可以将其比作餐厅的备餐台。厨房(DynamoDB)做好的菜需要几分钟才能送到餐桌。备餐台(DAX)将常点的菜品预先准备好,服务员可以立即端给客人。客人点新菜时才需要等厨房制作。大多数情况下,客人几乎不用等待。
什么是 DAX
DynamoDB Accelerator(DAX)是 DynamoDB 专用的内存缓存服务。DynamoDB 本身已经提供毫秒级的延迟,但某些应用场景需要更快的响应。DAX 将频繁读取的数据缓存在内存中,将读取延迟降低到微秒级(通常 200-400 微秒)。
工作原理
DAX 作为 DynamoDB 的前端缓存运行。读取请求首先到达 DAX,如果缓存命中则直接返回(微秒级)。缓存未命中时,DAX 从 DynamoDB 读取数据,缓存后返回。写入请求通过 DAX 直接写入 DynamoDB,同时更新缓存。DAX 集群由多个节点组成,支持跨可用区部署以确保高可用性。
与 DynamoDB 的兼容性
DAX 与 DynamoDB API 完全兼容。应用程序使用 DAX SDK(替代标准 DynamoDB SDK),只需更改端点配置即可。GetItem、Query、Scan 等读取操作自动使用缓存。PutItem、UpdateItem、DeleteItem 等写入操作透传到 DynamoDB。无需修改数据模型或查询逻辑。 关于 DynamoDB 性能优化的方法,也可以参考相关书籍(Amazon)。
开始使用
在 DAX 控制台中创建集群,选择节点类型和数量(建议至少 3 个节点用于生产环境)。DAX 集群部署在 VPC 内,需要配置子网组和安全组。在应用程序中将 DynamoDB 客户端替换为 DAX 客户端,指向 DAX 集群端点即可开始使用缓存。
注意事项
- DAX 按节点小时计费,即使没有请求也会产生费用。请评估是否真的需要微秒级延迟
- DAX 集群部署在 VPC 内,Lambda 函数需要配置 VPC 访问才能使用 DAX
- DAX 不适合写入密集型工作负载,缓存的主要价值在于读取加速