View a markdown version of this page

如何 ElastiCache 运作 - Amazon ElastiCache

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

如何 ElastiCache 运作

在这里,您可以找到 ElastiCache 部署主要组件的概述。

缓存和缓存引擎

缓存是一种内存数据存储,可用于存储缓存的数据。通常,您的应用程序会将经常访问的数据缓存在缓存中,以优化响应时间。 ElastiCache 提供了两个部署选项:无服务器缓存和基于节点的集群。请参阅选择部署选项

注意

亚马逊 ElastiCache 使用 Valkey、Memcached 和 Redis OSS 引擎。如果您不确定要使用哪个引擎,请参阅本指南中的比较 Valkey、Memcached 和 Redis OSS 基于节点的集群

如何 ElastiCache 运作

ElastiCache 无服务器

ElastiCache Serverless 使您能够创建缓存,而不必担心容量规划、硬件管理或集群设计。您只需为缓存提供一个名称,即可收到一个端点,可以在 Valkey、Memcached 或 Redis OSS 客户端中配置此端点以开始访问缓存。

注意
  • ElastiCache Serverless 在集群模式下运行 Valkey、Memcached 或 Redis OSS,并且仅与支持 TLS 的客户端兼容。

主要优势

  • 无需进行容量规划:ElastiCache 无服务器让您无需规划容量。 ElastiCache Serverless 持续监控缓存的内存、计算和网络带宽利用率,并可纵向和横向扩展。它可以增大缓存节点,同时并行启动横向扩展操作,以确保缓存能够扩展以始终满足您的应用程序需求。

  • Pay-per-use:使用 ElastiCache Serverless,您可以为缓存中的工作负载存储的数据和使用的计算量付费。请参阅定价维度

  • High-availability:ElastiCache Serverless 会自动跨多个可用区 (AZ) 复制您的数据,以实现高可用性。它会自动监控底层缓存节点,并在出现故障时将其替换。它为每个缓存提供 99.99% 可用性 SLA。

  • 自动软件升级:ElastiCache Serverless 会自动将您的缓存升级到最新的次要版本和补丁软件版本,而不会影响您的应用程序的可用性。当有新的主要版本可用时, ElastiCache 将向您发送通知。

  • 安全性:无服务器始终对传输中数据和静态数据进行加密。您可以使用服务托管密钥或您自己的客户自主管理型密钥,对静态数据进行加密。

下图说明了 ElastiCache 无服务器的工作原理。

ElastiCache 无服务器缓存操作示意图,从可用区到客户 VPC,再到服务 VPC。

当您创建新的无服务器缓存时, ElastiCache 会在您的 VPC 中选择的子网中创建一个虚拟私有云 (VPC) 终端节点。您的应用程序可以通过这些 VPC 端点连接到缓存。

使用 ElastiCache Serverless,您可以收到应用程序连接到的单个 DNS 端点。当您请求与端点建立新连接时, ElastiCache Serverless 会通过代理层处理所有缓存连接。代理层有助于减少复杂的客户端配置,因为在底层集群发生变化时,客户端无需重新发现集群拓扑。代理层是一组使用网络负载均衡器处理连接的代理节点。

当应用程序创建新的缓存连接时,网络负载均衡器会将请求发送到代理节点。当应用程序执行缓存命令时,连接到应用程序的代理节点会在缓存中的缓存节点上执行请求。代理层从客户端提取集群拓扑和节点。这使您 ElastiCache 能够智能地进行负载平衡、横向扩展和添加新的缓存节点、在缓存节点出现故障时更换缓存节点以及更新缓存节点上的软件,所有这些都不会影响应用程序的可用性,也不必重置连接。

Node-based 集群

您可以通过为 ElastiCache 集群选择缓存节点系列、大小和节点数来创建基于节点的集群。创建基于节点的集群可让您实施更精细的控制,并让您选择缓存中的分片数和每个分片中的节点(主节点和副本)数。您可以选择通过创建带多个分片的集群,以便在集群模式下操作 Valkey 或 Redis OSS,或者在非集群模式下使用单个分片来操作 Valkey 或 Redis OSS。

主要优势

  • 创建基于节点的集群:使用 ElastiCache,您可以创建基于节点的集群并选择要放置缓存节点的位置。例如,如果您的应用程序需要放弃高可用性来换取低延迟,则可以选择在单个可用区中部署缓存节点。或者,在创建基于节点的集群时,您可以使用跨多个可用区的节点,从而实现高可用性。

  • Fine-grained 控制:创建基于节点的集群时,您可以更好地控制微调缓存中的设置。例如,您可以使用 Valkey 和 Redis OSS 参数Memcached 特定的参数 配置缓存引擎。

  • 垂直和水平扩展:在需要时,您可以选择增大或减小缓存节点大小来手动扩缩集群。您也可以通过添加新分片或向分片添加更多副本来水平扩展。您还可以使用该Auto-Scaling 功能根据计划配置缩放,或者根据缓存上的 CPU 和内存使用率等指标进行扩展。

下图说明了基于节点的 ElastiCache 集群的工作原理。

ElastiCache 基于节点的集群操作示意图,从可用区到客户 VPC,再到 ElastiCache 托管缓存节点。

定价维度

您可以通过两个部署 ElastiCache 选项进行部署。部署 ElastiCache 无服务器时,您需要为存储在 ElastiCache 处理单元 (ECPU) 中的数据GB-hours 和计算量付费。在创建基于节点的集群时,您需要按小时为缓存节点使用量付费。请参阅此处的定价详细信息。

数据存储

您需要为存储在 ElastiCache 无服务器中的数据付费,按千兆字节小时计费 ()。GB-hrs ElastiCache Serverless 持续监控存储在缓存中的数据,每分钟采样多次,并计算每小时平均值以确定缓存中的 GB-hrs数据存储使用情况。每个 ElastiCache 无服务器缓存按流量计量存储至少 1 GB 的数据。

ElastiCache 处理单元 (ECPU)

您需要为应用程序在 ElastiCache 无服务器 ElastiCache 处理单元 (ecPU) 上执行的请求付费,该单位包括 vCPU 时间和传输的数据。

  • 对于传输的每 KB 数据,简单读取和写入需要 1 个 ECPU。例如,传输最多 1 KB 数据的 GET 命令将使用 1 个 ECPU。传输 3.2 KB 数据的 SET 请求将使用 3.2 个 ECPU。

  • 对于 Valkey 和 Redis OSS,使用更多 vCPU 时间和传输更多数据的命令会根据两个维度中的较高者使用 ECPU。例如,如果您的应用程序使用 HMGET 命令,使用简单 SET/GET 命令消耗的 vCPU 时间是 3 倍,并且传输 3.2 KB 的数据,则它将消耗 3.2 ECPU。或者,如果它仅传输 2 KB 数据,则将使用 3 个 ECPU。

  • 对于 Valkey 和 Redis OSS,需要额外的 vCPU 时间的命令将按比例消耗更多 ECPU。例如,如果您的应用程序使用 Valkey 或 Redis OSS HMGET 命令,并且作为一个简单 SET/GET 命令消耗的 vCPU 时间是 3 倍,那么它将消耗 3 个 ecpu。

  • 对于 Memcached,对多个项目执行操作的命令将按比例消耗更多的 ECPU。例如,如果您的应用程序对 3 个项目执行 multiget,则它将消耗 3 个 ECPU。

  • 对于 Memcached,操作更多项目和传输更多数据的命令会根据两个维度中的较高者使用 ECPU。例如,如果您的应用程序使用 GET 命令,检索 3 个项目并传输 3.2 KB 的数据,则它将使用 3.2 个 ECPU。或者,如果它仅传输 2 KB 数据,则将使用 3 个 ECPU。

ElastiCache Serverless 会发出一个名为的新指标ElastiCacheProcessingUnits,该指标可帮助您了解工作负载消耗的 ECPU。

节点小时数

您可以通过选择 EC2 节点系列、大小、节点数和跨可用区放置,来创建基于节点的集群。在创建基于节点的集群时,您需要按小时为每个缓存节点付费。

ElastiCache 备份

备份是无服务器缓存或基于 Valkey 或 Redis OSS 节点的集群的时间点副本。 ElastiCache 使您可以随时备份数据或设置自动备份。备份可用于还原现有缓存或为新集群制作种子。备份包含缓存中的所有数据和某些元数据。有关更多信息,请参阅 快照和还原