

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

# ElastiCache 组件和功能
<a name="WhatIs.Components"></a>

接下来，您可以找到 Amazon ElastiCache 部署的主要组件的概述。

**Topics**
+ [ElastiCache 节点](#WhatIs.Components.Nodes)
+ [ElastiCache 碎片](#WhatIs.Components.Shards)
+ [ElastiCache 集群](#WhatIs.Components.Clusters)
+ [ElastiCache 复制](#WhatIs.Components.ReplicationGroups)
+ [ElastiCache 端点](#WhatIs.Components.Endpoints)
+ [ElastiCache 参数组](#WhatIs.Components.ParameterGroups)
+ [ElastiCache 安全](#WhatIs.Components.Security)
+ [ElastiCache 子网组](#WhatIs.Components.SubnetGroups)
+ [ElastiCache 备份](#WhatIs.Components.Snapshots)
+ [ElastiCache 事件](#WhatIs.Components.Events)

## ElastiCache 节点
<a name="WhatIs.Components.Nodes"></a>

*节点*是 ElastiCache 部署的最小构建块。一个节点可独立于其他节点存在，也可与其他节点之间有某种关系。

节点是固定大小、与网络连接的安全 RAM 区块。每个节点都运行在您创建集群时选择的引擎和版本的实例。如果需要，您可以将集群中的节点纵向扩展或缩减到不同的实例类型。有关更多信息，请参阅 [缩放 ElastiCache](Scaling.md)。

一个集群中的每个节点都是相同的实例类型且运行相同的缓存引擎。每个缓存节点都有自己的域名服务 (DNS) 名称和端口。支持多种缓存节点类型，每种可有不同的关联内存量。有关受支持的节点实例类型的列表，请参阅[受支持的节点类型](CacheNodes.SupportedTypes.md)。

您可以按需付费的形式购买节点，这样一来，您只需为使用的节点付费，您也可以相当优惠的小时费率购买预留节点。如果使用率高，则购买预留节点可节省资金。假设您的集群几乎始终在使用中，并且您有时会添加节点来满足使用峰值的需求。在这种情况下，您可以购买大量预留节点以在大多数情况下运行。您也可以在偶尔需要添加节点的情况下购买随用随付节点。有关预留节点的更多信息，请参阅[预留节点](CacheNodes.Reserved.md)。

有关节点的更多信息，请参阅[管理中的节点 ElastiCache](CacheNodes.md)。

## ElastiCache 碎片
<a name="WhatIs.Components.Shards"></a>

Valkey 或 Redis OSS *分片*（在 API 和 CLI 中称为*节点组*）是 1 到 6 个相关节点的分组。启用集群模式的 Valkey 或 Redis OSS 集群始终有至少一个分片。

分片是一种数据库分区方法，它将大型数据库分成更小、更快、更易于管理的部分，这些部分称为数据分片。这可以通过在多个独立部分之间分配操作来提高数据库效率。使用分片可以带来许多好处，包括提高性能、可扩展性和成本效益。

 Valkey 和 Redis OSS 集群（已启用集群模式）最多可以拥有 500 个分片，并且跨分片对您的数据进行分区。如果引擎为 Valkey 或 Redis OSS 5.0.6 或更高版本，您可以将每个集群的节点或分片限制增至最多 500 个。例如，您可以选择配置一个 500 节点的集群，范围介于 83 个分片（一个主分片和 5 个副本分片）和 500 个分片（一个主分片，无副本分片）之间。确保可提供足够的 IP 地址来满足增长需求。常见的陷阱包括子网组中的子网 CIDR 范围太小，或者子网被其他集群共享和大量使用。有关更多信息，请参阅 [创建子网组](SubnetGroups.Creating.md)。对于低于 5.0.6 的版本，每个集群的限制为 250。

若要请求提高限制，请参阅 [AWS Service Limits](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html) 并选择限制类型 **Nodes per cluster per instance type（每个实例类型的每个集群的节点数）**。

*多节点分片*通过具有一个read/write 主节点和 1-5 个副本节点来实现复制。有关更多信息，请参阅 [使用复制组时的高可用性](Replication.md)。

有关分片的更多信息，请参阅[在中处理分片 ElastiCache](Shards.md)。

## ElastiCache 集群
<a name="WhatIs.Components.Clusters"></a>

*集群*是一个或多个[节点](CacheNodes.md)的逻辑分组。数据在 Memcached 集群的各节点之间进行分区，并在 Valkey 或 Redis OSS 集群（启用集群模式）的各分片之间进行分区。

许多 ElastiCache 操作都是针对集群的：
+ 创建集群
+ 修改集群
+ 为集群拍摄快照（所有版本的 Redis）
+ 删除集群
+ 查看集群中的元素
+ 在集群中添加和删除成本分配标签

有关更多详细信息，请参阅以下相关主题：
+ [管理中的集群 ElastiCache](Clusters.md) 和 [管理中的节点 ElastiCache](CacheNodes.md)

  有关集群、节点和相关操作的信息。
+ [AWS 服务限制：Amazon ElastiCache](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html#limits_elasticache)

  有关 ElastiCache 限制的信息，例如节点或集群的最大数量。要超出这些限制中的某些限制，您可以使用 [Amazon ElastiCache 缓存节点申请表提出请求](https://aws.amazon.com/contact-us/elasticache-node-limit-request/)。
+ [缓解故障](disaster-recovery-resiliency.md#FaultTolerance)

  有关增强 Valkey 或 Redis OSS 集群和复制组的容错能力的信息。

### 典型集群配置
<a name="WhatIs.Components.Clusters.TypicalConfigurations"></a>

以下是典型的集群配置。

#### Valkey 或 Redis OSS 集群
<a name="WhatIs.Components.Clusters.TypicalConfigurations.Redis"></a>

 Valkey 或 Redis OSS 集群（已禁用集群模式）始终只包含一个分片（在 API 和 CLI 中为一个节点组）。一个 Valkey 或 Redis OSS 分片包含 1 到 6 个节点。如果分区中有多个节点，则该分区支持复制。在这种情况下，一个节点是 read/write 主节点，其他节点是只读副本节点。

为了提高容错能力，我们建议在 Valkey 或 Redis OSS 集群中至少有两个节点并启用。Multi-AZ有关更多信息，请参阅 [缓解故障](disaster-recovery-resiliency.md#FaultTolerance)。

随着对 Valkey 或 Redis OSS（已禁用集群模式）集群的需求发生变化，您可以纵向扩展或纵向缩减。为此，请将您的集群移到其他节点实例类型。如果您的应用程序属于读取密集型，建议您在集群中添加只读副本。通过执行此操作，您可以将读取分布到更多数量的节点上。

您还可以使用数据分层功能。将访问频率更高的数据存储在内存中，而将访问频率较低的数据存储在磁盘上。使用数据分层的优点是可以减少内存需求。有关更多信息，请参阅 [数据分层 ElastiCache](data-tiering.md)。

ElastiCache 支持动态将 Valkey 或 Redis OSS 集群的节点类型更改为更大的节点类型。有关纵向扩展或缩减的信息，请参阅[扩缩 Valkey 或 Redis OSS（已禁用集群模式）集群](scaling-redis-classic.md#Scaling.RedisStandalone)或[扩缩单节点 Valkey 或 Redis OSS（已禁用集群模式）副本节点](Scaling.RedisReplGrps.md)。

#### Memcached 典型集群配置
<a name="WhatIs.Components.Clusters.TypicalConfigurations"></a>

Memcached 为每个 AWS 区域的每个客户最多支持 300 个节点，每个集群有 1-60 个节点。您可以跨 Memcached 集群中的节点对数据进行分区。

在运行 Memcached 引擎时，集群可以由 1-60 个节点构成。您可以将数据库分配到多个节点上。应用程序会对每个节点的终端节点进行读写操作。有关更多信息，请参阅[自动发现](AutoDiscovery.md)。

为了提高容错能力，请在集群区域内的各个可用区 (AZ) 中找到 Memcache AWS d 节点。这样一来，可最大程度地减小某个可用区内的故障对整个集群和应用程序的影响。有关更多信息，请参阅 [缓解故障](disaster-recovery-resiliency.md#FaultTolerance)。

由于 Memcached 集群需求不断变化的，您可通过添加或删除节点来进行向外扩展或向内扩展，从而跨新数量的节点对数据进行重新分区。对数据进行分区时，建议使用一致性哈希处理。有关一致性哈希处理的更多信息，请参阅[配置您的 ElastiCache 客户端以实现高效的负载平衡 (Memcached)](BestPractices.LoadBalancing.md)。

## ElastiCache 复制
<a name="WhatIs.Components.ReplicationGroups"></a>

对于 Valkey 和 Redis OSS，您可以通过在一个分片（在 API 和 CLI 中，称为节点组）中对 2 到 6 个节点进行分组来实现复制。其中一个节点是read/write 主节点。所有其他节点均为只读副本节点。复制仅适用于 Valkey 和 Redis OSS，不 ElastiCache 适用于 Memcached。 ElastiCache 

每个副本节点保留一个主节点中的数据的副本。复制节点使用异步复制机制来与主节点保持同步。应用程序可从集群中的任何节点进行读取，但只能对主节点进行写入。只读副本通过跨多个终端节点分布读取来增强可扩展性。只读副本还通过维护数据的多个副本来增强容错能力。在多个可用区内定位只读副本可进一步增强容错能力。有关容错能力的更多信息，请参阅[缓解故障](disaster-recovery-resiliency.md#FaultTolerance)。

 Valkey 或 Redis OSS（已禁用集群模式）集群支持一个分片（在 API 和 CLI 中称为*节点组*）。

从 API 和 CLI 的视角来看，复制使用了不同的术语来维护与之前版本的兼容性，但结果是相同的。下表显示了用于实现复制的 API 和 CLI 术语。

**比较复制：Valkey 或 Redis OSS（已禁用集群模式）与 Valkey 或 Redis OSS（已启用集群模式）--> Valkey 或 Redis OSS 集群（已启用集群模式）与 Valkey 或 Redis OSS 集群（已禁用集群模式）**

下表所示为 Valkey 或 Redis OSS（已禁用集群模式）与 Valkey 或 Redis OSS（已启用集群模式）复制组的功能对比。


****  

<table>
<thead>
  <tr><th></th><th> Valkey 或 Redis OSS 集群（已禁用集群模式）</th><th> Valkey 或 Redis OSS 集群（已启用集群模式）</th></tr>
</thead>
<tbody>
  <tr><td>分区（节点组）</td><td>1</td><td>1-500  </td></tr>
  <tr><td>每个分片的副本数 (节点组)</td><td>0-5</td><td>0-5</td></tr>
  <tr><td>数据分区</td><td>否</td><td>是</td></tr>
  <tr><td>Add/Delete 复制品</td><td>支持</td><td>是</td></tr>
  <tr><td>Add/Delete 节点组</td><td>否</td><td>是</td></tr>
  <tr><td>支持扩展</td><td>支持</td><td>是</td></tr>
  <tr><td>支持引擎升级</td><td>支持</td><td>是</td></tr>
  <tr><td>将副本提升为主副本</td><td>是</td><td>自动</td></tr>
  <tr><td>Multi-AZ</td><td>可选</td><td>必需</td></tr>
  <tr><td>Backup/Restore</td><td>支持</td><td>是</td></tr>
  <tr><td colspan="3">备注：</td></tr>
  <tr><td colspan="3">如果任何主副本没有副本，则在主副本失败时，您将失去该主副本的所有数据。</td></tr>
  <tr><td colspan="3">您可以使用备份和还原功能来迁移到 Valkey 或 Redis OSS（已启用集群模式）。</td></tr>
  <tr><td colspan="3">您可以使用备份和还原功能来调整您的 Valkey 或 Redis OSS（已启用集群模式）集群的大小。</td></tr>
</tbody>
</table>


所有分区（在 API 和 CLI 中称为节点组）和节点必须位于同一 AWS 区域内。但是，您可以 AWS 在该区域内的多个可用区中配置单个节点。

只读副本可防止潜在的数据丢失，因为数据是在两个或多个节点（主节点和一个或多个只读副本）上复制的。为获得更高可靠性和更快地恢复，建议您在不同可用区内创建一个或多个只读副本。

您还可以利用全局数据存储。通过使用适用于 Redis OSS 的全球数据存储功能，您可以跨 AWS 区域进行完全托管、快速、可靠和安全的复制。使用此功能，您可以为创建跨区域只读副本集群， ElastiCache 以实现跨 AWS 区域的低延迟读取和灾难恢复。有关更多信息，请参阅[使用全球数据存储跨 AWS 区域复制](Redis-Global-Datastore.md)。

**复制：限制和局限**
+ Multi-AZ 节点类型 T1 不支持。

## ElastiCache 端点
<a name="WhatIs.Components.Endpoints"></a>

终*端节点*是您的应用程序用于连接到 ElastiCache 节点或集群的唯一地址。

### Valkey 或 Redis OSS（已禁用集群模式）的单节点端点
<a name="WhatIs.Components.Endpoints.Redis"></a>

单节点 Valkey 或 Redis OSS 集群的端点用于连接到用于读取和写入的集群。

### Multi-node 禁用集群模式的 Valkey 或 Redis OSS 的终端节点
<a name="WhatIs.Components.Endpoints.Redis.Multi"></a>

多节点 Valkey 或 Redis OSS（已禁用集群模式）集群包含两种类型的端点。主终端节点始终连接到集群中的主节点，即使主角色中的特定节点发生更改也是如此。使用主终端节点执行对集群的所有写入操作。

使用读取器端点 将在所有只读副本之间均匀地分配指向端点的传入连接。使用单个节点终端节点进行读取操作（在 API/CLI 这些端点中称为读取终端节点）。

### Valkey 或 Redis（已启用集群模式）端点
<a name="WhatIs.Components.Endpoints.Redis.Cluster"></a>

Valkey 或 Redis OSS 集群（已启用集群模式）有一个单配置端点。通过连接到配置端点，您的应用程序可以查找集群中每个分片的主端点和读取端点。

有关更多信息，请参阅 [在中查找连接端点 ElastiCache](Endpoints.md)。

### ElastiCache 用于内存缓存终端节点
<a name="WhatIs.Components.Endpoints.Memcached"></a>

Memcached 集群中的每个节点都有自己的终端节点。该集群还具有一个称为*配置终端节点* 的终端节点。如果您启用 Auto Discovery 并连接到配置终端节点，则即使是在集群中添加或移除节点后，应用程序仍将自动*获知*每个节点终端节点。有关更多信息，请参阅[自动发现](AutoDiscovery.md)。

有关更多信息，请参阅 [在中查找连接端点 ElastiCache](Endpoints.md)。

## ElastiCache 参数组
<a name="WhatIs.Components.ParameterGroups"></a>

缓存参数组是为受支持的引擎软件管理运行时设置的简单方法。参数用于控制内存使用率、移出策略、项目大小等。 ElastiCache 参数组是可以应用于集群的引擎特定参数的命名集合。通过这样做，您可以确保该集群中的所有节点都以完全相同的方式进行配置。

有关受支持的参数、其默认值以及其中可以修改的参数的列表，请参阅 [DescribeEngineDefaultParameters](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeEngineDefaultParameters.html)（CLI：[describe-engine-default-parameters](https://docs.aws.amazon.com/cli/latest/reference/elasticache/describe-engine-default-parameters.html)）。

有关 ElastiCache 参数组的更多详细信息，请参阅[使用参数组配置引擎 ElastiCache 参数](ParameterGroups.md)。

## ElastiCache 安全
<a name="WhatIs.Components.Security"></a>

为了增强安全性， ElastiCache 只有在您允许的 Amazon EC2 实例上运行的应用程序才能访问节点。您可以使用安全组控制可访问集群的 Amazon EC2 实例。

默认情况下，所有新 ElastiCache 集群都是在亚马逊虚拟私有云 (Amazon VPC) 环境中启动的。可以使用*子网组*授予从在特定子网上运行的 Amazon EC2 实例进行集群访问的权限。

除了限制节点访问外，还 ElastiCache 支持对运行指定版本的节点进行 TLS 和就地加密。 ElastiCache有关更多信息，请参阅下列内容：
+ [Amazon 的数据安全 ElastiCache](encryption.md)
+ [使用 Valkey 和 Redis OSS AUTH 命令进行身份验证](auth.md)

## ElastiCache 子网组
<a name="WhatIs.Components.SubnetGroups"></a>

*子网组*是您可为在 Amazon VPC 环境中运行的集群指定的子网（通常为私有子网）集合。

如果您在 Amazon VPC 中创建集群，则必须指定缓存子网组。ElastiCache 使用该缓存子网组选择一个子网和该子网内的 IP 地址，以便与您的缓存节点关联。

有关 Amazon VPC 环境中缓存子网组使用情况的更多信息，请参阅以下内容：
+ [亚马逊 VPC 和安全 ElastiCache](VPCs.md)
+ [步骤 3：授予对集群的访问权限](SubnetGroups.designing-cluster-pre.valkey.md#GettingStarted.AuthorizeAccess.valkey)
+ [子网和子网组](SubnetGroups.md)

## ElastiCache 备份
<a name="WhatIs.Components.Snapshots"></a>

*备份*是 Valkey 或 Redis OSS 集群或无服务器缓存的时间点副本，或 Memcached 无服务器缓存的时间点副本。备份可用于还原现有集群或为新集群做种。备份包含集群中的所有数据和某些元数据。

根据您集群上运行的 Valkey 或 Redis OSS 版本，备份过程需要不同的预留内存量才能成功。有关更多信息，请参阅下列内容：
+ [快照和还原](backups.md)
+ [如何实施同步和备份](Replication.Redis.Versions.md)
+ [备份基于节点的集群对性能的影响](backups.md#backups-performance)
+ [确保具有用于创建 Valkey 或 Redis OSS 快照的足够内存](BestPractices.BGSAVE.md)

## ElastiCache 事件
<a name="WhatIs.Components.Events"></a>

当集群上发生重要事件时， ElastiCache 会向特定的 Amazon SNS 主题发送通知。这些事件可能包括诸如添加节点失败、添加节点成功、修改安全组等内容。通过监控关键事件，您可以了解集群的当前状态，并且在许多情况下，您都可用采取相应的纠正措施。

有关 ElastiCache 事件的更多信息，请参阅[亚马逊 SNS 对事件的监控 ElastiCache](ECEvents.md)。