

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

# 使用 Auto Discovery
<a name="AutoDiscovery.Using"></a>

要开始将自动发现功能与 ElastiCache for Memcached 搭配使用，请按照以下步骤操作：
+ [获取配置端点](#AutoDiscovery.Using.ConfigEndpoint)
+ [下载 ElastiCache Cluster Client](#AutoDiscovery.Using.ClusterClient)
+ [修改应用程序编程](#AutoDiscovery.Using.ModifyApp)

## 获取配置端点
<a name="AutoDiscovery.Using.ConfigEndpoint"></a>

如要连接至某个集群，客户端程序必须知道集群的配置终端节点。请参阅主题[查找集群的端点（控制台）（Memcached）](Endpoints.md#Endpoints.Find.Memcached)。

您也可以使用带有 `aws elasticache describe-cache-clusters` 参数的 `--show-cache-node-info` 命令：

不论您使用什么方法查找集群的终端节点，配置终端节点的地址中始终有 **.cfg**。

**Example 使用适用于 ElastiCache 的 Amazon CLI 查找端点**  
对于 Linux、macOS 或 Unix：  

```
aws elasticache describe-cache-clusters \
    --cache-cluster-id mycluster \
    --show-cache-node-info
```
对于 Windows：  

```
aws elasticache describe-cache-clusters ^
    --cache-cluster-id mycluster ^
    --show-cache-node-info
```
此操作将生成类似于以下内容的输出（JSON 格式）：  

```
{
    "CacheClusters": [
        {
            "Engine": "memcached", 
            "CacheNodes": [
                {
                    "CacheNodeId": "0001", 
                    "Endpoint": {
                        "Port": 11211, 
                        "Address": "mycluster.fnjyzo.cfg.0001.use1.cache.amazonaws.com"
                    }, 
                    "CacheNodeStatus": "available", 
                    "ParameterGroupStatus": "in-sync", 
                    "CacheNodeCreateTime": "2016-10-12T21:39:28.001Z", 
                    "CustomerAvailabilityZone": "us-east-1e"
                }, 
                {
                    "CacheNodeId": "0002", 
                    "Endpoint": {
                        "Port": 11211, 
                        "Address": "mycluster.fnjyzo.cfg.0002.use1.cache.amazonaws.com"
                    }, 
                    "CacheNodeStatus": "available", 
                    "ParameterGroupStatus": "in-sync", 
                    "CacheNodeCreateTime": "2016-10-12T21:39:28.001Z", 
                    "CustomerAvailabilityZone": "us-east-1a"
                }
            ], 
            "CacheParameterGroup": {
                "CacheNodeIdsToReboot": [], 
                "CacheParameterGroupName": "default.memcached1.4", 
                "ParameterApplyStatus": "in-sync"
            }, 
            "CacheClusterId": "mycluster", 
            "PreferredAvailabilityZone": "Multiple", 
            "ConfigurationEndpoint": {
                "Port": 11211, 
                "Address": "mycluster.fnjyzo.cfg.use1.cache.amazonaws.com"
            }, 
            "CacheSecurityGroups": [], 
            "CacheClusterCreateTime": "2016-10-12T21:39:28.001Z", 
            "AutoMinorVersionUpgrade": true, 
            "CacheClusterStatus": "available", 
            "NumCacheNodes": 2, 
            "ClientDownloadLandingPage": "https://console.aws.amazon.com/elasticache/home#client-download:", 
            "CacheSubnetGroupName": "default", 
            "EngineVersion": "1.4.24", 
            "PendingModifiedValues": {}, 
            "PreferredMaintenanceWindow": "sat:06:00-sat:07:00", 
            "CacheNodeType": "cache.r3.large"
        }
    ]
}
```

## 下载 ElastiCache Cluster Client
<a name="AutoDiscovery.Using.ClusterClient"></a>

如要利用 Auto Discovery，客户端程序必须使用 *ElastiCache Cluster Client*。ElastiCache Cluster Client 可用于 Java、PHP 和 .NET，其中包含适用于发现和连接至您的所有缓存节点所需的全部逻辑。

**下载 ElastiCache Cluster Client**

1. 登录 Amazon 管理控制台并打开 ElastiCache 控制台 ([https://console.aws.amazon.com/elasticache/](https://console.amazonaws.cn/elasticache/))。

1. 在 ElastiCache 控制台上，选择 **ElastiCache Cluster Client**，然后选择 **Download（下载）**。

ElastiCache Cluster Client for Java 的源代码可在 [https://github.com/amazonwebservices/aws-elasticache-cluster-client-memcached-for-java](https://github.com/amazonwebservices/aws-elasticache-cluster-client-memcached-for-java) 获取。此库是以常见的 Spymemcached 客户端为基础。ElastiCache Cluster Client 根据亚马逊软件许可 [https://aws.amazon.com/asl](https://www.amazonaws.cn/asl) 发布。您可以按照自己的方式自由修改源代码。您甚至可以将代码并入其他开放源 Memcached 库中或者您自己的客户端代码中。

**注意**  
如要使用适用于 PHP 的 ElastiCache Cluster Client，您首先需要将其安装在您的 Amazon EC2 实例上。有关更多信息，请参阅 [安装适用于 PHP 的 ElastiCache Cluster Client](Appendix.PHPAutoDiscoverySetup.md)。  
对于支持 TLS 的客户端，请下载 PHP 版本 7.4 或更高版本的二进制文件。  
若要使用适用于 .NET 的 ElastiCache Cluster Client，您首先需要将其安装在您的 Amazon EC2 实例上。有关更多信息，请参阅 [安装适用于 .NET 的 ElastiCache Cluster Client](Appendix.DotNETAutoDiscoverySetup.md)。

## 修改应用程序编程
<a name="AutoDiscovery.Using.ModifyApp"></a>

修改您的应用程序，以便它可以使用 Auto Discovery。以下部分介绍了如何使用适用于 Java、PHP 和 .NET 的 ElastiCache Cluster Client。

**重要**  
指定集群的配置终端节点时，请确保其地址中有 ".cfg"，如此处所示。请勿使用 CNAME 或其中没有 ".cfg" 的终端节点。  

```
"mycluster.fnjyzo.cfg.use1.cache.amazonaws.com";
```
 未明确指定集群的配置终端节点会导致配置到特定节点。