Amazon MemoryDB 功能

为什么选择 MemoryDB?

Amazon MemoryDB 是与 Redis OSS 兼容的持久型内存数据库服务,可提供超快性能。它专为带有微服务架构的现代化应用程序而构建。

MemoryDB 与 Redis OSS 兼容,使客户能够采用他们目前所用的灵活且易用的 Redis OSS 数据结构、API 和命令快速构建应用程序。使用 MemoryDB 时,您的所有数据都存储在内存中,使您能够实现微秒级读取,以及个位数毫秒的写入延迟和高吞吐量。MemoryDB 还使用分布式事务日志跨多可用区(AZ)持久存储数据,以实现快速失效转移、数据库恢复和节点重启。MemoryDB 提供内存中性能和多可用区持久性,可用作您的微服务应用程序的高性能主数据库,因此无需单独管理高速缓存和持久数据库。

Redis OSS 兼容性

Redis OSS 是一种快速、开源、内存中的键值数据存储库。开发人员利用 Redis OSS 提供亚毫秒级的响应时间,每秒处理数百万个请求,支持游戏、广告技术、金融服务、医疗保健和 IoT 等行业的实时应用程序。 

Redis OSS 提供了灵活的 API、命令和数据结构,例如流、集合和列表,用于构建敏捷、多功能的应用程序。MemoryDB 与 Redis OSS 保持兼容,并支持您熟悉的那几组 Redis OSS 数据类型、参数和命令。这意味着您如今用于 Redis OSS 的那些代码、应用程序、驱动程序和工具也可以与 MemoryDB 结合使用,因此您能够快速构建应用程序。

超快的性能

MemoryDB 将您的整个数据集存储在内存中,可实现微秒级的读取延迟、几毫秒的写入延迟以及高吞吐量。它每天可处理超过 13 万亿个请求,并支持每秒 1.6 亿个请求的峰值。 使用微服务架构进行构建的开发人员需要超高的性能,因为在每次用户交互或 API 调用中,这些应用程序可能需要与很多服务组件交互。使用 MemoryDB,您可以实现极低的延迟,以便为最终用户提供实时性能。

MemoryDB 包括增强型 I/O 多路复用,可大规模显著改善吞吐量和延迟。增强型 I/O 多路复用非常适合具有多个客户端连接的吞吐量受限工作负载,其优势会随工作负载并发级别扩展。例如,相较于与 Redis OSS 兼容的 MemoryDB 版本 6,使用 r6g.4xlarge 节点并运行 5200 个并发客户端时,吞吐量(每秒读取和写入操作数)可增加高达 46%,P99 延迟可减少高达 21%。对于这些类型的工作负载,节点的网络 I/O 处理可能成为扩展能力的限制因素。

通过增强型 IO 多路复用,每个专用网络 IO 线程会将来自多个客户端的命令传送到 Redis OSS 引擎,从而利用 Redis 高效批量处理命令的能力,如下图所示:

多可用区持久性

除了在内存中存储您的整个数据集以外,MemoryDB 还利用分布式事务日志来提供数据持久性、一致性和可恢复性。MemoryDB 在多可用区中存储数据,因此您可以实现快速的数据库恢复和重新启动。对于需要低延迟和高吞吐量的工作负载,您可以将 MemoryDB 用作单一主数据库服务,而无需单独管理缓存以获得高速度,并通过其他关系数据库或非关系数据库获得可靠性。

可扩展性

您可以扩展 MemoryDB 集群,以满足不断变化的应用程序需求:通过添加或移除节点进行水平扩展,或者通过切换到更大或更小的节点类型进行垂直扩展。MemoryDB 支持利用分片进行写入扩展,以及通过添加副本进行读取扩展。在执行调整大小操作期间,您的集群会继续保持在线状态,并支持读取和写入操作。

完全托管

开始使用 MemoryDB 的步骤非常简单。只需利用 AWS 管理控制台启动一个新的 MemoryDB 集群,也可以使用 AWS CLI 或 SDK。MemoryDB 数据库实例为您所选择的节点类型预配置了合适的参数和设置。您在几分钟之内即可启动集群并连接应用程序,而无需进行其他配置。

MemoryDB 为您的数据库实例提供了 Amazon CloudWatch 指标。您可以使用控制台来查看适用于集群的超过 35 个关键运行指标,其中包括计算、内存、存储、吞吐量、活动连接等等。

MemoryDB 自动通过新的更新使您的集群保持最新状态,您可以轻松将集群升级到 Redis OSS 的最新版本。

安全性

Amazon Aurora 在 Amazon Virtual Private Cloud(Amazon VPC)中运行,这样您可以将数据库隔离在您自己的虚拟网络中,并使用行业标准的加密 IPsec VPN 与您的本地部署 IT 基础设施连接。此外,通过使用 MemoryDB 中的 VPC 配置,您可以配置防火墙设置并控制对您的数据库实例的网络访问。

借助 MemoryDB,使用您通过 AWS Key Management Service(AWS KMS)创建的密钥和控制来加密静态数据。 此外,使用 AWS Graviton2 节点类型创建的集群包含始终可用的 256 位 DRAM 加密。MemoryDB 支持使用传输层安全性协议(TLS)进行动态加密。

您可以使用与 MemoryDB 集成的 AWS Identity and Access Management(IAM)功能,控制 IAM 用户和组可对 MemoryDB 资源执行的操作。例如,您可以配置 IAM 规则以帮助确保特定用户仅拥有只读访问权限,同时管理员可创建、修改和删除资源。有关 API 级权限的更多信息,请参阅使用适用于 MemoryDB 的 IAM 策略

MemoryDB 利用 Redis OSS 访问控制列表(ACL)来控制集群的身份验证和授权。通过 ACL,您可以为同一集群中的不同用户定义不同的权限。

与 Kubernetes 集成

适用于 MemoryDB 的 AWS Controllers for Kubernetes(ACK)使您能够直接定义并使用来自您的 Kubernetes 集群的 MemoryDB 资源。这样您就可以利用 MemoryDB 来支持您的 Kubernetes 应用程序,而无需在集群外定义 MemoryDB 资源,或在集群内运行和管理内存数据库功能。您可以从 Amazon Elastic Container Registry(Amazon ECR)下载 MemoryDB ACK 容器映像,并查阅文档以获得安装指导。 您也可以访问博客以获取更多详细信息。

注意:ACK for MemoryDB 现已正式上市。请在我们的 Github 页面上提供您的反馈。

 

JSON 支持

除了 Redis OSS 中包含的数据结构以外,MemoryDB 还免费为 JavaScript 对象表示法(JSON)文档提供了本地支持。您只需使用专为 JSON 文档而设计和优化的内置命令来开发应用程序。MemoryDB 支持部分 JSON 文档更新,以及使用 JSONPath 查询语言执行的强大搜索和筛选功能。当使用 Redis OSS 6.2 和更高版本时,可以获得 JSON 支持。有关更多信息,请参阅 MemoryDB 文档

成本优化

作为一种成本较低的方式,MemoryDB 提供数据分层来将您的集群扩展到数百 TB 的容量。数据分层为 MemoryDB 提供了一个具有性价比的选项,除了在内存中存储数据外,还可以在每个集群节点中使用成本较低的固态硬盘(SSD)。它非常适合于定期访问 20% 以内总体数据集的工作负载,以及在 SSD 上访问数据时能够容忍额外延迟的应用程序。

当使用具有数据分层的集群时,MemoryDB 设计用于在可用内存容量消耗时,自动且透明地将最近使用最少的项目从内存移动到本地连接的 NVMe SSD。当您访问存储在 SSD 上的项目时,MemoryDB 会在处理请求之前将其移回内存。MemoryDB 数据分层可在基于 Graviton2 的 R6gd 节点上使用。与 R6g 节点(仅内存)相比,R6gd 节点的总容量(内存+SSD)增加了近 5 倍,可以帮助您在最大利用率下实现 60% 以上的存储成本节省。假设有 500 字节的字符串值,与对内存中数据的读取请求相比,对存储在 SSD 上的数据的读取请求通常会增加 450µs 的延迟。

MemoryDB 提供预留节点,如果您在一年或三年期内达到承诺使用量,与按需节点价格相比,最多可节省 55%。预留节点是对 MemoryDB 按需节点的补充,可为企业提供灵活性,帮助降低成本。MemoryDB 提供了三种预留节点付款选项(不预付、部分预付和全额预付),您可以通过这三种选项平衡您的预付款金额与您的有效小时价格。

MemoryDB 预留节点在节点系列和 AWS 区域内提供大小灵活性。这意味着折扣后的预留节点费率将自动应用于同一节点系列中的各种大小的使用量。大小灵活性功能将减少您花在管理预留节点上的时间,而且由于不再受特定数据库节点大小的限制,因此即使您的数据库需要更新,也可以从折扣中获得最大收益。