コンピュータ ネットワークにおいて、ルーティングとは、特定の規則に従って送信元アドレスから宛先アドレスにデータ パケットを送信するプロセスを指し、また、このプロセスを実行する機器やソフトウェアを指す場合もあります。
ルーターは、宛先アドレスを見つけて適切なパスを介してパケットを転送するデバイスです。インターネットでは、ルーターはパケットの転送と接続の中心となるデバイスです。これらは、ルーティング情報を交換し、データ パケットが異なるネットワークやサブネットを越えて送信できるように調整することによって、データ パケットの最適なパスを決定します。ルーターの転送と選択を通じて、データ パケットは送信元アドレスから宛先アドレスに送信され、ネットワーク通信が完了します。
最新のアプリケーション アーキテクチャでは、ルーティングは API またはマイクロサービス リクエストをルーティングするプロセスも指します。APIゲートウェイやロードバランサなどのデバイスやソフトウェアは、リクエストのルーティングルールに従ってリクエストを対応するバックエンドサービスに転送し、統合されたエントリとサービスルーティングの機能を実現します。
つまり、ルーティングはネットワーク通信の重要な部分であり、データ パケットの信頼できる伝送パスを提供するだけでなく、ネットワーク セキュリティ、パフォーマンスの最適化、サービスの検出などにおいても重要な役割を果たします。
マイクロサービスのルーティング実装原理は通常、すべてのマイクロサービスの API をクライアントが使用する 1 つの入り口に集中させる API ゲートウェイの方法を採用します。API ゲートウェイは、実際にはクライアントのリクエストをインターセプトし、さまざまなルーティング ルールに従って対応するバックエンド サービスにリクエストを転送するリバース プロキシ サーバーです。
一般的に使用されるマイクロサービス ルーティング ツールには、Spring Cloud Gateway、Zuul、Kong などが含まれます。
具体的な実装プロセスは次のように簡単に説明できます。
-
クライアントは API ゲートウェイにリクエストを送信します。
-
API ゲートウェイはリクエストを受信してリクエスト URL を解析し、ルーティング ルールに従って対応するマイクロサービスを照合します。
-
API ゲートウェイは、サービス検出メカニズムと負荷分散アルゴリズムに基づいて利用可能なマイクロサービスを選択し、リクエストをマイクロサービスに転送します。
-
マイクロサービスはリクエストを処理し、レスポンスを API ゲートウェイに返します。
-
API Gateway はクライアントに応答を返します。
このようにして、API ゲートウェイはクライアントのリクエストを一元的に制御できるため、マイクロサービス アーキテクチャの保守性と信頼性が向上します。同時に、クライアントはバックエンド サービスの特定の詳細に注意を払う必要はなく、API ゲートウェイによって提供される統合 API にのみ注意を払う必要があります。
例えば:
企業のマイクロサービス アーキテクチャに、ユーザー サービス、注文サービス、製品サービスの 3 つのサービスが含まれているとします。各サービスには独自の API インターフェイスがあり、さまざまな機能を提供します。クライアントは、注文の発注、注文情報の照会などのビジネス操作を完了するためにこれらのサービスを使用する必要があります。
クライアントが各サービスの API インターフェイスを直接呼び出す場合、サービスの IP アドレス、ポート番号、API インターフェイス アドレス、リクエスト パラメーターなどを含む各サービスの特定の詳細を知る必要があるため、クライアント開発の難易度が高くなります。 . 保守性の低下。さらに、バックエンド マイクロサービスのデプロイ場所はいつでも変更される可能性があるため、クライアントはそれを使用し続ける前に、対応する変更を行う必要があります。
この問題を解決するために、企業は API ゲートウェイを導入して統合 API を外部に提供し、すべてのクライアント リクエストが API ゲートウェイを介してルーティングされるようにすることができます。たとえば、クライアントが注文サービスの API インターフェイスを呼び出す必要がある場合、API ゲートウェイにリクエストを送信するだけでよく、API ゲートウェイはルーティング ルールに従ってリクエストを注文サービスに転送し、その後、クライアントへの注文サービスの応答。
API ゲートウェイを介すると、クライアントはバックエンド マイクロサービスの特定の実装に注意を払う必要がなく、API ゲートウェイによって提供される統合 API を使用するだけで済みます。同時に、API ゲートウェイはクライアントのリクエストを効果的に一元的に制御し、マイクロサービス アーキテクチャの保守性と信頼性を向上させることができます。
実装コードの実装方法は実際のシナリオによって異なります。以下では、例として Java 言語を使用して、API ゲートウェイのルーティング実装の使用方法を簡単に紹介します。
-
まず、Spring Cloud Gateway、Kong など、自分の言語に適した API ゲートウェイ フレームワークを導入する必要があります。
-
API ゲートウェイのルーティング ルールを定義します。このルールは、URL パス、リクエスト パラメーター、リクエスト メソッドなどに基づいて照合され、リクエストを転送するバックエンド マイクロサービスを決定できます。たとえば、クライアントが
/user
リクエストを送信すると、API ゲートウェイはそのリクエストをユーザー マイクロサービスに転送でき、クライアントがリクエストを送信すると/order
、API ゲートウェイはそのリクエストを注文マイクロサービスに転送できます。 -
負荷分散アルゴリズムに基づいてターゲットのバックエンド マイクロサービスを選択することで、ネットワークのボトルネックを回避し、システムの可用性を向上させることができます。
-
クライアント要求をターゲットのバックエンド マイクロサービスに転送し、マイクロサービスの応答を待って、応答をクライアントに返します。
ほとんどの API ゲートウェイ フレームワークはリバース プロキシに基づいて実装されているため、構成ファイルやその他の形式を使用した迅速な展開と管理もサポートしています。実際の開発では、DevOps の概念を組み合わせ、コンテナ化テクノロジーを使用して API ゲートウェイをデプロイおよび管理し、より効率的で柔軟なアプリケーション アーキテクチャを実現することもできます。
最後に、ルーティングの選択について Apache Camel を確認できます。
Camel のルーティングは、EIP (Enterprise Integration Patterns、エンタープライズ統合パターン) に基づいて設計されています。EIP は、エンタープライズ レベルの統合問題を記述する業界全体のパターン ライブラリであり、アプリケーション システム間でデータを転送する方法とプロセスに重点を置き、ルーティング、変換、オフロード、集約などの一般的に使用されるソリューションを提供します。
Camel は複数の EIP モード実装を提供します。その中で最も基本的なのはルーティング モードです。ルーティング パターンは、あるエンドポイントから別のエンドポイントにメッセージを配信するプロセスを指します。通常、メッセージの送信元と宛先は異なるため、送信するにはルーティングが必要です。
Camel では、ルートはRouteBuilder
を通じて構成および定義されます。RouteBuilder
複数のRouteDefinition
オブジェクトが含まれており、各RouteDefinition
オブジェクトは特定のルーティング定義を表します。各RouteDefinition
オブジェクトでは、コンシューマ エンドポイント、実稼働エンドポイント、プロセッサ、ルーティング ポリシーなどのさまざまな EIP コンポーネントを定義できます。これらのコンポーネントを有機的に組み合わせることで、柔軟なルーティングロジックを実装できます。
通常のルーティング モードに加えて、Camel はメッセージ配信 (Message Dispatcher)、メッセージ集約 (Message Aggregate)、メッセージ ルーティング テーブル (Message Router) などのさまざまな特別なルーティング モードも提供します。これらのパターンは、開発者が複雑なビジネス ロジックをより効率的に実装できるように、特定のビジネス要件に応じて使用できます。
つまり、Camel のルーティング モードは EIP の設計と実装に基づいており、柔軟で効率的なメッセージ送信と処理機能を実現するためのさまざまなコンポーネントとルーティング戦略を提供します。開発者は、特定のビジネス ニーズに基づいて、カスタマイズされた開発のためのさまざまなコンポーネントと戦略を選択できます。