Auto Discovery サービスについて

このページでは、Memorystore for Memcached の Auto Discovery サービスの概要について説明します。Auto Discovery サービスにアクセスして接続する方法については、Auto Discovery サービスの使用をご覧ください。

Auto Discovery サービスは、Memcached インスタンスのスケーリング時に発生するノード IP アドレスの追加と削除に、クライアントが自動的に適応するプログラミング方法です。

Auto Discovery サービスを使用しない場合は、スケーリング中に Memcached クライアントのノード IP アドレスリストを手動で管理する必要があります。ノード IP アドレスリストを手動で管理すると、インスタンスのスケールアップやスケールダウンに合わせてクライアントを更新する必要があるため、オーバーヘッドが増えます。Auto Discovery を使用してこの作業を自動化できます。

Auto Endpoint を、getsetdelete などの Memcached コマンドを実行するためではなく、本来の用途で使用する必要があります。

Auto Discovery サービスのアーキテクチャの概要

Memorystore for Memcached は、ディスカバリー エンドポイントを使用して Auto Discovery サービスを公開します。ディスカバリー エンドポイントは、Memcached インスタンス内のノードの最新リストを返すインスタンス専用 IP アドレスです。すべての Memorystore for Memcached インスタンスには、固有のディスカバリー エンドポイントがあります。 インスタンスが作成されると、検出エンドポイントの IP アドレスは変更されません。

インスタンスの Auto Discovery 情報を取得するには、ディスカバリー エンドポイントのクエリを実行します。ディスカバリー エンドポイントは次の情報を返します。

項目 説明 Datatype
構成のバージョン ID ノードリストの変更ごとに増分する ID 整数 9
ノードリスト 現在のノードとその IP アドレスのリストを返します。 文字列 node1-ip|node1-ip|node1-port node2-ip|node2-ip|node2-port

Memorystore for Memcached は、ディスカバリー エンドポイントを直接公開しますが、クライアント ライブラリでは自動検出を使用できることも必要です。クライアントで自動検出を行う方法は 2 つあります。

  1. 自動検出をサポートするクライアント ライブラリを使用します。

    • Golang Memcached クライアント フォーク。
  2. クライアント ライブラリに自動検出ロジックを手動で追加します。

Auto Discovery サービスの動作

Auto Discovery サービスには、結果整合性があります。Auto Discovery ノードリストが、スケーリング操作の後に現在のクラスタ構成に追いつくまで、数秒の遅延が発生することがあります。

結果整合性によって、クライアントには、サービスの分散性だけでなく次のような動作がもたらされる可能性があります。クライアント ロジックは、この動作を考慮して設計する必要があります。

  • 同じクライアントが Auto Discovery サービスへの 2 つのクエリを別々に実行すると、サービスから 2 つの異なる Auto Discovery レスポンスを受け取ることがあります(サービスに整合性がありません)。ただし、いずれかのレスポンスの高い方の Configuration version ID は、クライアントがレスポンスの処理に使用できます。

  • 2 つのクライアントはサービスから 2 つの異なる Auto Discovery レスポンス(サービスに整合性はありません)を受け取ることができますが、クライアントが互いに通信しないため、どちらを最新にするかはわかりません。このような状態で、インスタンスがキャッシュミスを返すことがあります。このシナリオでは、クライアントは Auto Discovery サービスの整合性がとれるまで待つ必要があります。

次のステップ