如何 ElastiCache 运作 - 亚马逊 ElastiCache
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

如何 ElastiCache 运作

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

缓存和缓存引擎

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

注意

亚马逊 ElastiCache 使用 Valkey、Redis OSS 和 Memcached 引擎。如果您不确定要使用哪个引擎,请参阅本指南中的比较 Valkey、Redis 和 Memcache OSS d 自己设计的缓存

如何 ElastiCache 运作

ElastiCache 无服务器

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

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

主要优势

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

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

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

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

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

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

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

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

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

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

自行设计 ElastiCache 的集群

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

主要优势

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

  • 精细控制:在设计自己的集群时,您可以通过微调缓存上的设置来实现更多控制。例如,您可以使用Valkey 和 Redis 参数 OSSMemcached 特定的参数来配置缓存引擎。

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

下图说明了 ElastiCache 自行设计的集群的工作原理。

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

定价维度

您可以通过两个部署 ElastiCache 选项进行部署。在部署 ElastiCache Serverless 时,您需要为以 GB 小时为单位存储的数据和按 ElastiCache 处理单元进行计算的使用量付费()。ECPU选择设计自己的 ElastiCache 集群时,您需要按每小时的缓存节点使用量付费。请参阅此处的定价详细信息。

数据存储

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

ElastiCache 处理单元 (ECPUs)

您需要为应用程序在 ElastiCache Serverless 上执行的 ElastiCache 处理单元 (ECPUs) 中执行的请求付费,该单位包括 v CPU 时间和传输的数据。

  • 简单读取和写入每传输千字节 (KB) 的数据需要 1 ECPU。例如,传输最多 1 KB 数据的GET命令消耗 1 ECPU。传输 3.2 KB 数据的SET请求将消耗 3.2 KB ECPUs。

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

  • 使用 Valkey 和 RedisOSS,需要额外 v CPU 时间的命令会按比例消耗更多时间。ECPUs例如,如果您的应用程序使用 Valkey 或 Redis OSS HMGET命令,并且消耗的 v CPU 时间是简单SET/GET命令的 3 倍,那么它将消耗 3。ECPUs

  • 使用 Memcached,对多个项目进行操作的命令将按比例消耗更多资源。ECPUs例如,如果您的应用程序对 3 个项目执行多重获取,则它将消耗 3 ECPUs 个。

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

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

节点小时数

您可以通过选择EC2节点系列、大小、节点数量和跨可用区域的位置来选择设计自己的缓存集群。在自行设计集群时,您需要按小时为每个缓存节点付费。

ElastiCache 备份

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