写点什么

一种读密集型的内存缓存 — Amazon DynamoDB Accelerator (DAX) 发行公开预览版

  • 2017-05-18
  • 本文字数:1503 字

    阅读完需:约 5 分钟

AWS 发行了 Amazon DynamoDB Accelerator(DAX)的公开预览版,它是一种完全受托管的 write-through 缓存服务,在逻辑上位于 DynamoDB 数据表的前面,提高读密集型负载的性能。DAX 与 DynamoDB 是 API 兼容的,也就是说,现有的应用程序可以直接使用 DAX,而不用被重写。该预览版目前只支持 Java SDK。

Amazon DynamoDB 是一种完全受托管的、可扩展的 NoSQL 数据库服务,它既支持文档模型也支持键值存储模型。据 AWS 博客所称, DynamoDB 可被用于广告技术、物联网、游戏、电子商务和金融,有些用户在一张 DynamoDB 表中存储超过 100TB 的数据而且每秒提交上百万个读写请求。有些高要求的应用程序有着最终一致的读密集型负载,开发 DAX 的目的就是为这些应用程序提供快速的内存性能。

DAX 可处理下面三种应用场景:

  • 作为内存缓存,DAX 将最终一致的读负载的延时降低了一个数量级,从几毫秒降到微妙级。
  • DAX 提供了一种可管理的服务来降低运营上和应用上的复杂度,该服务与 Amazon DynamoDB 是 API 兼容的,因此在现有应用程序中实现它的时候只要求最小的功能更改
  • 对于读取繁重或突发性的负载,DAX 降低对过度分配读容量单元(read capacity units)的需求,从而提高吞吐量和降低运营成本。这一点对遭遇热键(hot keys)的应用程序很有用,对大型 DynamoDB 数据集(其中,不同分区内的读容量单元是均等分布的)的读吞吐量也很有用。

作为一个可管理的服务,DAX 集群可通过 AWS UI 来创建,运营任务如软件打补丁、集群维护、复制或故障管理是自动处理的(可指定一个维护窗口)。每一个 DAX 集群可包含 1 到 10 个节点,可以通过增加节点来提高整体的读取吞吐量。缓存的大小基于节点的大小,范围从 dax.r3.large 到 dax.r3.8xlarge,在集群被初始化的时候指定这个值。集群在 VPC 中运行,节点可以分布在整个可用区域。

DAX 的预览版目前只支持 DynamoDB Java SDK 的 API,而且必须用一种新的用于 Java 的 DAX SDK 来与 DAX 进行交互。AWS 文档表明,这是因为 SDK 与集群发生交互时使用了一个低级 TCP 接口,该接口被调优后用于低延迟和高吞吐量。产品的路线图中已经包含了支持用其他语言来访问 DAX。

根据 DAX 开发者指南,这类缓存技术的正面的应用案例包括:

  • 对读取需要最快的可能响应时间的应用程序。
  • 对一小部分项目读取更频繁的应用程序。譬如,为了转移“热”键和非均匀数据分布的影响,可将读取活动放在 DAX 缓存中。
  • 读密集型和代价敏感型的应用程序。DAX 允许将读取活动从 DynamoDB 表转移到 DAX 集群,从而降低所需要的读容量单元。
  • 需要反复读取大量数据的应用程序。譬如,一个长时间运行的数据云的分析程序暂时消耗了一个 DynamoDB 表的所有读容量,这将会影响需要访问同一个数据的其他应用程序。借用 DAX,该分析可针对缓存数据进行。

对下列应用程序而言,DAX 并不是理想的选择:

  • 需要很强的一致的读取,或者不能忍受最终一致的读取的应用程序(然而,当处理一致的读取时,可配置 DAX 来让其引用回 DynamoDB 表)。
  • 不需要微秒级读取响应时间的应用程序。
  • 写密集型或者没有太多的读取活动的应用程序。
  • 已经使用了 DynamoDB 的其他缓存解决方案并相应地使用了自己的客户端逻辑的应用程序。

Amazon DAX 的公开预览版在美国东部(弗吉尼亚州北部)、美国西部(俄勒冈州)和欧洲(爱尔兰)等地区可免费使用。其他信息可参见 DAX 开发者指南

查看英文原文 Amazon DynamoDB Accelerator (DAX) Released in Preview: In-Memory Cache for Read-Intensive Workloads


感谢薛命灯对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-05-18 19:002167
用户头像

发布了 21 篇内容, 共 10.7 次阅读, 收获喜欢 3 次。

关注

评论

发布
暂无评论
发现更多内容

拿蚂蚁offer,全靠阿里P8大牛总结的Java架构开发手册

Java 编程 程序员 架构 面试

双非学历为进大厂天天刷Java面试题,面试却履败,原因竟是算法?

Java 编程 程序员 架构 IT

百度翻译团队获“2021年大数据科技传播奖”未来奖

百度大脑

人工智能

艺术市场的区块链革命

CECBC

区块链技术赋能音乐作品版权保护 法院采信存证证书作为有效权属证据

CECBC

应用出海,如何使用苹果 CallKit 提升网络通话体验

融云 RongCloud

音视频 出海社交

「架构师教程」二十年架构师「马士兵」大牛的Java高级架构师教程

Java 编程 程序员 IT 计算机

全网首发!马士兵内部共享—1658页《Java面试突击核心讲》

收到请回复

Java 程序员 面试 架构师 金九银十

MySQL 数据库开发入门(四):MySQL 的数据引擎

程序员小呆

MySQL MySQL 高可用 :MySQL 数据库 MySQL 数据库 java

实践篇 -- Redis客户端缓存在SpringBoot应用的探究

binecy

缓存 springboot redis sentinel

Alibaba最新微服务持续集成,内含(Jenkins+Docker+Spring Cloud+K8S)

Java 架构 面试 程序人生 编程语言

Groovy 记录(2)-CompilationUnit

春秋易简

MySQL 数据库开发入门(三):Navicat 客户端的使用

程序员小呆

MySQL MySQL 高可用 MySQL 运维 :MySQL 数据库 MySQL 数据库

学生试卷&答题结构redis存储

Nico

趣说Node.js的回调函数

Regan Yue

node.js JavaScrip Regan Yue 10月月更

Node.js 日志之 winston 实践

devpoint

nodejs winston logger 10月月更

五分钟了解 Blazor

智联大前端

blazor

Serverless 工程实践 | 零基础上手 Knative 应用

阿里巴巴云原生

阿里云 Serverless 云原生 Knative

业界良心啊!第五次更新的Spring Cloud Alibaba升级太多内容

Java 编程 程序员 IT 计算机

面试作弊神器?!阿里P8亲自撰写的这份Java最新面试手册

Java 程序员 架构 面试 后端

MySQL 数据库开发入门(二):数据库表的创建与管理

程序员小呆

MySQL MySQL 高可用 MySQL 运维 MySQL 数据库 java

面试官:你说说ThreadLocal为什么会导致内存泄漏?

长河

Java

ToB产品如何自传播(下)

石云升

产品经理 产品思维 10月月更

gRPC,爆赞

AlwaysBeta

golang 编程 gRPC 后端 Go 语言

【Vuex 源码学习】第十二篇 - Vuex 插件机制的实现

Brave

源码 vuex 10月月更

从Engineer到Leader,我在思考啥?

夏兮。

互联网 管理 技术人 IT

前后端、多语言、跨云部署,全链路追踪到底有多难?

阿里巴巴云原生

阿里云 云原生 全链路追踪

Groovy记录(1)-GroovyClassLoader

春秋易简

Groovy

SSRF漏洞实例分析

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 漏洞分析

阿里大牛开源内部"JDK源码手册"一经现世,惊艳四方

Java 架构 面试 程序人生 编程语言

基于区块链的供应链金融创新

CECBC

一种读密集型的内存缓存 — Amazon DynamoDB Accelerator (DAX) 发行公开预览版_亚马逊云科技_Daniel Bryant_InfoQ精选文章