|
著者 | 雷歌 ソース | Java Chinese Community (ID: javacn666) 転載許可については、当社(WeChat ID: GG_Stone)までご連絡ください。 OpenFeignは、Springが公式にリリースした宣言的なサービス呼び出しおよび負荷分散コンポーネントです。現在は廃止されたFeign(Netflix Feign)の代替として開発され、Springのトップレベルのオープンソースプロジェクトでもあります。私たちは日々の開発でOpenFeignを頻繁に使用しており、設定後にパフォーマンスを向上させるための便利なヒントやコツがいくつかあります。この記事ではこれらのヒントを詳しく紹介します(コメント欄にご意見・ご提案を自由にお寄せください)。 I. タイムアウトの最適化OpenFeign は Ribbon フレームワークを基盤アーキテクチャとして使用し、Ribbon のリクエスト接続タイムアウトとリクエスト処理タイムアウトを自身のタイムアウトとして使用します。Ribbon のデフォルトのリクエスト接続タイムアウトとリクエスト処理タイムアウトはどちらも 1 秒です。次のソースコードを参照してください。 OpenFeign を使用してサービス インターフェイスを 1 秒以上呼び出すと、次のエラーが発生します。 1秒は確かに短すぎるため、ビジネスロジックを正しく処理できるように、OpenFeignのタイムアウトを手動で設定する必要があります。OpenFeignのタイムアウトを変更するには、以下の2つの方法があります。
1. リボンのタイムアウトを設定するプロジェクト構成ファイル application.yml に次の構成を追加します。 リボン: 2. OpenFeignのタイムアウトを設定するプロジェクト構成ファイル application.yml に次の構成を追加します。 偽装する: この構成のセマンティクスはより明示的であるため、OpenFeign のタイムアウトを設定するにはこの方法が推奨されます。 II. リクエスト接続の最適化OpenFeign の基盤となる通信コンポーネントは、デフォルトで HTTP リクエストに JDK 組み込みの URLConnection オブジェクトを使用します。接続プールを使用しないため、パフォーマンスはあまり良くありません。OpenFeign の通信コンポーネントを、Apache HttpClient や OkHttp などの専用通信コンポーネントに手動で置き換えることができます。これらの専用コンポーネントには組み込みの接続プールがあり、HTTP 接続オブジェクトの再利用と管理を改善し、HTTP リクエストの効率を大幅に向上させます。次に、Apache HttpClient を例に、専用通信コンポーネントの使用方法を説明します。 1. Apache HttpClient依存関係を追加するプロジェクトの依存関係管理ファイル pom.xml に次の構成を追加します。 <!-- OpenFeign フレームワークの依存関係を追加する --> 2. Apache HttpClientを有効にするApache HttpClient コンポーネントを起動するには、プロジェクトの application.yml ファイルに次の構成を追加します。 偽装する: Apache HttpClient 構成が有効かどうかを確認するには、次の画像に示すように、feign.SynchronousMethodHandler#executeAndDecode メソッドにブレークポイントを設定します。 III. データ圧縮OpenFeignはデフォルトではデータ圧縮を有効にしていませんが、Gzip圧縮機能を手動で有効にすることができます。これにより、帯域幅の利用率が大幅に向上し、データ転送速度が向上します。プロジェクトのapplication.ymlファイルに以下の設定を追加してください。 偽装する:
IV. 負荷分散の最適化OpenFeignは、コアとなる負荷分散にRibbonを使用しています。ソースコードを見ると、デフォルトの負荷分散戦略はラウンドロビンであることがわかります(次の図を参照)。 ただし、ラウンドロビン戦略の他に、次の 6 つの組み込み負荷分散戦略から選択できます。
パフォーマンス上の理由から、ポーリング戦略の代わりに重み付け戦略または領域依存戦略を使用することを選択できます。これらの戦略は実行効率が最も高いためです。 V. ログレベルの最適化OpenFeign はログ機能の強化を提供し、そのログ レベルには次のものが含まれます。
以下のように、構成ファイルを通じてログ レベルを設定できます。 ログ記録: ここで、cn.myjszl.service は OpenFeign インターフェースが配置されているパッケージ名です。OpenFeign はデフォルトではログを出力しませんが、開発段階で変更される可能性があります。そのため、本番環境では OpenFeign の実行効率を向上させるために、適切なログレベルを慎重に確認し、設定する必要があります。 要約OpenFeignは、Springによって公式にリリースされた宣言的なサービス呼び出しおよび負荷分散コンポーネントです。本番環境では、以下の設定を行うことでOpenFeignの動作を最適化できます。
|