关于自动发现服务

本页面简要介绍了适用于 Memorystore for Memcached 的 Auto Discovery 服务。如需了解如何访问和连接 Auto Discovery 服务,请参阅使用 Auto Discovery 服务

Auto Discovery 服务是一种程序化方式,可让客户端根据您扩缩 Memcached 实例时发生的情况,自动添加和移除节点 IP 地址。

如果您不使用 Auto Discovery 服务,则必须在扩缩期间手动管理 Memcached 客户端中的节点 IP 地址列表。手动管理节点 IP 地址列表会增加额外开销,因为您必须确保在实例扩缩时客户端得以更新。Auto Discovery 将自动为您处理这项工作。

您应使用 Auto Discovery 端点来实现其预期目的,而不是运行 Memcached 命令,例如 getsetdelete

Auto Discovery 服务架构概览

Memorystore for Memcached 使用“发现端点”公开 Auto Discovery 服务。发现端点是实例的专用 IP 地址,用于返回 Memcached 实例中的当前节点列表。每个 Memorystore for Memcached 实例都有一个独一无二的发现端点。 创建实例后,发现端点的 IP 地址不能更改。

如需获取实例的 Auto Discovery 信息,请查询发现端点。发现端点会返回以下信息:

字段 说明 数据类型 示例
配置版本 ID 针对每项节点列表更改递增的 ID 整数 9
节点列表 返回当前节点及其 IP 地址的列表。 字符串 node1-ip|node1-ip|node1-port node2-ip|node2-ip|node2-port

Memorystore for Memcached 会直接公开发现端点,但您的客户端库中也必须具有自动发现功能。您可以通过两种方式在客户端中实现自动发现:

  1. 使用支持自动发现功能的客户端库。

    • Golang Memcached 客户端分支。
  2. 手动将自动发现逻辑添加到客户端库。

Auto Discovery 服务行为

Auto Discovery 服务最终将保持一致。当 Auto Discovery 节点列表在扩缩操作后与当前集群配置同步时,可能会出现延迟(以秒为单位)。

除服务的分布式特性外,最终一致性还可以为客户端生成以下行为。客户端逻辑在设计时应考虑到这一行为:

  • 对 Auto Discovery 服务执行两个不同查询的同一客户端可能会从该服务接收两个不同的 Auto Discovery 响应(服务不一致时)。但是,其中一个响应具有较高的 Configuration version ID,客户端可以用来处理响应。

  • 两个客户端可以从服务接收两个不同的 Auto Discovery 响应(服务不一致时),但由于客户端不相互通信,因此它们无法确定哪个响应是最新的响应。处于此状态时,实例可以返回缓存未命中。在这种情况下,客户端必须等待 Auto Discovery 服务变得一致。

后续步骤