ダボ - 交通管制

このタスクでは、シンプルなオンライン モール マイクロサービス システムに基づいた Dubbo のトラフィック制御機能を示します。

オンラインモールの構成図は以下の通りです。

 

このシステムは 5 つのマイクロサービス アプリケーションで構成されています。

  • フロントエンドモールのホームページは、ユーザーと対話するための Web インターフェイスとして、User、Detail、Order などを呼び出すことにより、ユーザーのログイン、商品の表示、注文管理などのサービスを提供します。
  • ユーザーデータ管理、本人確認等を担当するユーザーサービス。
  • 注文注文サービス。注文作成や注文クエリなどのサービスを提供し、製品在庫やその他の情報を確認するために Detail サービスに依存します。
  • Detail 製品詳細サービス。製品詳細情報を表示し、Comment サービスを呼び出して製品に関するユーザー コメント レコードを表示します。
  • コメントコメントサービスは、製品に対するユーザーのコメントデータを管理します。

ショッピングモールシステムの導入

便宜上、システム全体を Kubernetes クラスターにデプロイし、次のコマンドを実行して mall プロジェクトのデプロイを完了します。プロジェクトのソース コードのサンプルは dubbo-samples/task にあります。

kubectl apply -f https://raw.githubusercontent.com/apache/dubbo-samples/master/10-task/dubbo-samples-shop/deploy/All.yml

完全な展開アーキテクチャ図は次のとおりです。

 

注文サービスには v1 と v2 の 2 つのバージョンがあり、v2 は注文サービスの最適化後にリリースされた新しいバージョンです。

  • バージョン v1 は注文の詳細を表示せずに注文を作成するだけです
  • バージョン v2 では、注文が正常に作成された後、注文の配送先住所の詳細が表示されます。

Detail サービスと Comment サービスには、それぞれ v1 と v2 の 2 つのバージョンがあり、トラフィック迂回の効果を実証するために複数のバージョンを使用します。

  • バージョン v1 はデフォルトですべてのリクエストを処理します
  • バージョン v2 は、特定のリージョンにデプロイされたサービスをシミュレートするため、v2 インスタンスには特定のラベルが付きます。

次のコマンドを実行して、すべてのサービスとポッドが正常に実行されていることを確認します。

$ kubectl get services -n dubbo-demo
$ kubectl get pods -n dubbo-demo

システムの整合性を確保するために、この例では、モールに関連するいくつかのマイクロサービス アプリケーションに加えて、Nacos 登録構成センター、Dubbo 管理コンソール、および Skywalking フル リンク追跡システムもバックグラウンドで起動します。

$ kubectl get services -n dubbo-system
$ kubectl get pods -n dubbo-system

アクセスアドレスを取得する

次のコマンドを実行して、クラスター ポートをローカル ポートにマッピングします。

kubectl port-forward -n dubbo-demo deployment/shop-frontend 8080:8080
kubectl port-forward -n dubbo-system service/dubbo-admin 38080:38080
kubectl port-forward -n dubbo-system service/skywalking-oap-dashboard 8082:8082

この時点で、ブラウザを開いて次のアドレスからアクセスします。

  • モールホームページ http://localhost:8080
  • Dubbo 管理コンソール http://localhost:38080
  • スカイウォーキング コンソール http://localhost:8082

タスクアイテム

次に、次のタスク項目を通じて、モールに交通制御ルールを追加してみます。

タイムアウトを調整する

実行期間中にサービスタイムアウト時間を動的に調整することで、不当なタイムアウト設定やシステムの緊急事態によるサービスタイムアウトの多発やサービスブロックなどの問題に効果的に対処し、システムの安定性を向上させることができます。

再試行回数を増やす

最初のサービス呼び出しが失敗した後、再試行すると全体の呼び出し成功率が効果的に向上します。

アクセスログ

アクセス ログには、特定のマシンが一定期間内に処理したすべてのサービス リクエスト情報を記録できます。実行状態でアクセス ログを動的に有効にすると、トラブルシューティングに非常に役立ちます。

同じコンピュータルーム/エリアが望ましい

同じコンピュータ ルーム/エリア内の優先順位とは、アプリケーションがサービスを呼び出すときに、最初に同じコンピュータ ルーム/エリア内のサービス プロバイダーを呼び出し、クロスリージョンによって引き起こされるネットワーク遅延を回避し、それによって呼び出しの応答時間が短縮されることを意味します。

環境隔離

クラスター内の 1 つ以上のアプリケーション用に論理分離環境を分割することにより、グレースケール環境または複数セットのテスト環境で使用できます。

パラメータルーティング

たとえば、トラフィックはユーザー ID に基づいてルーティングされ、少数のユーザー リクエストが最新の製品バージョンに転送されて、新しいバージョンの安定性を確認し、製品エクスペリエンスに関するユーザー フィードバックが取得されます。

重量比

ルールを通じて単一のマシンまたはマシンのグループの重みを動的に調整することで、実行状態でリクエスト トラフィックの配分を変更し、動的な比例トラフィック ルーティングを実現できます。

サービスのダウングレード

サービスのダウングレードの中心的な目標は、これらの弱い依存関係をターゲットにすることです。弱い依存関係が利用できない場合、または呼び出しが失敗した場合、ダウングレード結果を返すことにより、関数は可能な限り完全な状態に保たれます。

固定機流用

リクエストを特定のプロバイダー マシンに転送することで、開発またはオンラインの問題を迅速に再現するのに役立ちます。

おすすめ

転載: blog.csdn.net/leesinbad/article/details/132504269