选择节点大小 - 亚马逊 ElastiCache (Redis OSS)
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

选择节点大小

为集群选择的节点大小会影响成本、性能和容错能力。

选择节点大小

有关 Graviton 处理器的优势的信息,请参阅 Amazon Graviton 处理器

回答以下问题可以帮助您确定 Redis OSS 实现所需的最低节点类型:

  • 是否预期会出现采用多个客户端连接但吞吐量受限的工作负载?

    如果是这种情况,并且您运行的是 Redis OSS 版本 5.0.6 或更高版本,则可以代表 Redis OSS 引擎使用我们增强的 I/O 功能获得更好的吞吐量和延迟,该功能使用可用的 CPU 来卸载客户端连接。如果你运行的是 Redis OSS 7.0.4 或更高版本,除了增强的 I/O 之外,你还将通过增强的 I/O 多路复用获得额外的加速,即每个专用的网络 IO 线程将来自多个客户端的命令管道到 Redis OSS 引擎,利用 Redis OSS 高效地批量处理命令的能力。在 ElastiCache (Redis OSS) v7.1 及更高版本中,我们扩展了增强的 I/O 线程功能,使其也可以处理表示层逻辑。所说的表示层,我们的意思是增强型 I/O 线程现在不仅可以读取客户端输入,还可以将输入解析为 Redis OSS 二进制命令格式,然后将其转发到主线程执行,从而提高性能。有关更多详细信息,请参阅博客文章支持的版本页面。

  • 您是否有仅会经常访问少部分数据的工作负载?

    如果是这种情况,并且您运行的是 Redis OSS 引擎版本 6.2 或更高版本,则可以通过选择 r6gd 节点类型来利用数据分层。使用数据分层功能时,最近极少使用的数据将存储到 SSD 中。在检索这些数据时,虽然延迟会轻微增加,但是可以节省成本。有关更多信息,请参阅 数据分层

    有关更多信息,请参阅 受支持的节点类型

  • 您的数据共需要多少内存量?

    要获得一般估计值,请取要缓存的项目的大小。将此大小乘以同时要保留在缓存中的项目数。要获得项目大小的合理估计值,请先序列化您的缓存项目,再计算字符数。然后将该值除以集群中的分区数。

    有关更多信息,请参阅 受支持的节点类型

  • 你运行的是哪个版本的 Redis OSS?

    2.8.22 之前的 Redis OSS 版本要求您为故障转移、快照、同步和将副本提升为主操作预留更多内存。之所以有此要求,是因为您必须具有足够的内存来执行过程中的所有写入。

    Redis OSS 2.8.22 及更高版本使用无分叉保存进程,与之前的进程相比,该进程需要的可用内存更少。

    有关更多信息,请参阅下列内容:

  • 您的应用程序的写操作有多密集?

    在拍摄快照或进行故障转移时,写操作密集的应用程序需要多得多的可用内存( 数据未使用的内存)。无论何时执行 BGSAVE 进程,必须有足够的、数据未使用的内存,以容纳在 BGSAVE 过程中执行的所有写入。例如,拍摄快照时、将主集群与集群中的副本同步时以及启用仅附加文件 (AOF) 功能时。另一个示例是将副本提升为主节点时(如果您启用了多可用区)。最糟糕的情况是在此过程中重写所有数据。在这种情况下,您需要的节点实例大小是数据所需的内存量的两倍。

    有关更多详细信息,请参阅 确保您有足够的内存来创建 Redis OSS 快照

  • 您的实现是独立的 Redis OSS(已禁用集群模式)集群还是具有多个分片的 Redis OSS(已启用集群模式)集群?

    Redis OSS(已禁用集群模式)集群

    如果您要实现 Redis OSS(已禁用集群模式)集群,则您的节点类型必须能够容纳您的所有数据以及必要的开销,如上一个 bullet 中所述。

    例如,假设您估计所有项目的总大小为 12GB。在此情况下,您可以使用具有 13.3GB 内存的 cache.m3.xlarge 节点 或具有 13.5GB 内存的 cache.r3.large 节点。但是,您可能需要更多内存才能执行 BGSAVE 操作。如果您的应用程序写入操作繁重,请将内存要求翻倍至至少 24GB。因此,使用具有 27.9GB 内存的 cache.m3.2xlarge 或具有 30.5GB 内存的 cache.r3.xlarge

    带有多个分片的 Redis OSS(已启用集群模式)

    如果您要实现具有多个分片的 Redis OSS(已启用集群模式)集群,则该节点类型必须能够容纳bytes-for-data-and-overhead / number-of-shards字节数据。

    例如,假设您估计所有项目的总大小为 12GB 且您具有两个分区。在此情况下,您可以使用具有 6.05GB 内存的 cache.m3.large 节点(12GB/2)。但是,您可能需要更多内存才能执行 BGSAVE 操作。如果您的应用程序写入操作繁重,请将内存要求翻倍至至少每个分区 12GB。因此,使用具有 13.3GB 内存的 cache.m3.xlarge 或具有 13.5GB 内存的 cache.r3.large

  • 您是否正在使用 Local Zones?

    L@@ ocal Zones 允许您将诸如 ElastiCache 集群之类的资源放置在靠近用户的多个位置。但是,当您选择节点大小时,请注意,无论容量要求如何,本次可用节点大小目前仅限于以下内容:

    • 最新一代:

      M5 节点类型:cache.m5.largecache.m5.xlargecache.m5.2xlargecache.m5.4xlargecache.m5.12xlargecache.m5.24xlarge

      R5 节点类型:cache.r5.largecache.r5.xlargecache.r5.2xlargecache.r5.4xlargecache.r5.12xlargecache.r5.24xlarge

      T3 节点类型:cache.t3.microcache.t3.smallcache.t3.medium

在集群运行时,您可以监控发布到的内存使用情况、处理器利用率、缓存命中率和缓存未命中率指标。 CloudWatch您可能会注意到您的集群没有您想要的命中率,或者密钥被移出的频率过于频繁。在这些情况下,您可以选择具有较高 CPU 和内存规格的不同节点大小。

在监控 CPU 使用率时,请记住 Redis OSS 是单线程的。因此,将报告的 CPU 使用率乘以 CPU 核心数来获得实际使用量。例如,报告使用率为 20% 的四核 CPU 实际上是 Redis OSS 以 80% 的利用率运行的核心 CPU。