マイクロサービスにおける「サービス発見メカニズム」の紹介
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
1. 基本的な考え方
サービス検出とは、分散システム内で利用可能なサービスを自動的に検出して識別するプロセスを指します。
マイクロサービス アーキテクチャでは、サービスが異なるサーバーに分散された複数の小規模な自律サービスに分割されるため、サービス間の効果的な通信を確保するにはサービス検出メカニズムが必要です。
2. 主な手順
-
サービス登録:
- マイクロサービス インスタンスが開始されると、そのネットワークの位置情報 (IP アドレスやポート番号など) とサービス ID がサービス登録センターに登録されます。
- この登録プロセスは通常自動で行われ、人間の介入は必要ありません。
- 登録センターは、すべてのサービス インスタンスの登録情報を維持し、サービス インスタンスの動的な登録と登録解除をサポートする責任を負います。
-
サービスのお問い合わせ:
- マイクロサービスが別のマイクロサービスを呼び出す必要がある場合、サービス レジストリにクエリを実行して、必要なサービスの現在利用可能なネットワーク アドレスを調べます。
- 登録センターはサービス インスタンスのアドレス リストを返し、呼び出し元は負荷分散ポリシーに従って通信するサービス インスタンスを選択できます。
3. 主要なコンポーネント
-
サービスレジストリ:
- これはサービス検出メカニズムの中核コンポーネントであり、すべてのサービス インスタンスの登録情報の管理と保存を担当します。
- サービス インスタンスが操作を登録およびキャンセルするための API インターフェイスを提供し、サービス コンシューマがサービス インスタンスの登録情報をクエリすることもサポートします。
-
サービスプロバイダー:
- 特定のサービスを提供するマイクロサービス インスタンスです。
- 起動時に自身のサービス情報をサービスレジストリに登録し、終了時に自身のサービス情報を登録解除します。
-
サービス利用者:
- これは、他のサービスを呼び出す必要があるマイクロサービス インスタンスです。
- サービス レジストリに問い合わせて必要なサービスのネットワーク アドレスを取得し、そのサービスとの通信を確立します。
4. サービス検出メカニズムの実装方法
サービス検出メカニズムは、実装方法に応じて、クライアント検出とサーバー検出の 2 つのタイプに分類できます。
-
クライアント検出モード:
- クライアントは、登録センターに問い合わせ、利用可能なサービスのリストを取得し、負荷分散ポリシーに従ってサービス インスタンスと直接対話する責任があります。
- 利点は、クライアントが柔軟に負荷分散戦略を策定できるため、サービス登録センターへの依存が軽減されることです。
- 欠点は、クライアントが複雑な検出ロジックを実装する必要があるため、コードが複雑になり、メンテナンスのコストが増加することです。
-
サーバー検出モード:
- クライアントはサーバー (通常は API ゲートウェイまたはサービス プロキシ) にリクエストを送信し、サーバーは登録センターにクエリを実行し、リクエストを実際のサービス インスタンスに転送する責任を負います。
- 利点は、クライアントの実装が簡素化され、コードの複雑さとメンテナンスのコストが削減されることです。
- 欠点は、すべてのリクエストをサーバー経由で転送する必要があるため、システムの遅延と障害ポイントが増加することです。
5. サービス検出メカニズムの利点
-
サービス間の結合を減らす:
- マイクロサービスは、互いのネットワーク アドレスを直接知る必要はなく、サービス登録センターを通じて通信するだけで済みます。
-
システムの拡張性と柔軟性を向上させる:
- サービスが動的に変更されると (拡張、縮小、移行など)、サービス登録センターはサービス インスタンス情報をリアルタイムで更新して、サービス間の通信が影響を受けないようにすることができます。
-
ロードバランシングとフェイルオーバーをサポート:
- クライアントは、サービス登録センターから複数のサービス インスタンスのアドレス リストを取得し、負荷分散ポリシーに基づいてそのうちの 1 つを通信用に選択できます。サービス インスタンスが利用できない場合、サービス レジストリは自動的にそのインスタンスを異常としてマークし、そのインスタンスへのリクエストの送信を回避できます。
6. 共通サービス検出ツール
-
ユーレカ:
- Netflix によって開発された、クライアント検出モードを使用するサービス検出ツール。非常に軽量で、統合と使用が簡単です。
-
領事:
- HashiCorp によって開発されたサービス検出および構成センター ツール。サービス健全性チェックやその他の機能を含む比較的完全なソリューションを提供し、HTTP および DNS プロトコルをサポートします。
-
飼育係:
- Apache ZooKeeper は、サービス検出にも使用できるオープンソースの分散調整サービスです。分散ロック、ネーミング サービス、その他の機能を提供し、さまざまなクライアント ライブラリをサポートします。
マイクロサービス アーキテクチャでは、サービス ディスカバリ メカニズムにより、登録センターを介してサービス インスタンスの動的な登録およびクエリ機能が実現され、サービス間の結合が軽減され、システムのスケーラビリティと柔軟性が向上します。