Auto Discovery 服务概览

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

Auto Discovery 服务是一种程序化方式,可让客户端自动适应在您扩缩 Memcached 实例时发生的节点 IP 地址的添加和移除。如果您不使用 Auto Discovery 服务,则必须在扩缩期间手动管理 Memcached 客户端中的节点 IP 地址列表。手动管理节点 IP 地址列表会增加额外开销,因为您必须确保在实例扩缩时更新客户端。Auto Discovery 功能可帮助您自动完成这项工作。

Auto Discovery 服务架构概览

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

要获取实例的 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 服务保持一致。

后续步骤