序文
Spring Cloudは、Spring Bootに基づいてマイクロサービスを実装するための完全なフレームワークです。構成管理、サービス発見、サーキットブレーカー、インテリジェントルーティング、マイクロエージェント、コントロールバス、グローバルロック、意思決定キャンペーン、分散セッション、クラスター州管理などのマイクロサービス開発に必要なコンポーネントを提供します。最も重要なことは、Spring Boot Frameworkで使用すると、マイクロサービスアーキテクチャを使用してクラウドサービスを開発するのが非常に便利になることです。 Spring Cloudには多くのサブフレームが含まれています。その中には、Spring Cloud NetflixはNetflixによって開発されたフレームワークの1つであり、後にSpring Cloudファミリーに組み込まれています。その主なモジュールには、サービスの発見、サーキットブレーカーと監視、インテリジェントルーティング、クライアントロードバランシングなどが含まれます。
この記事では、Spring Cloudのコンポーネントタイムアウトの関連コンテンツを紹介し、参照と学習のために共有します。以下ではあまり言いません。詳細な紹介を一緒に見てみましょう。
リボンのタイムアウト
グローバル設定:
リボン:ReadTimeout:60000ConnectTimeout:60000
ローカル設定:
Service-ID:リボン:ReadTimeOut:1000ConnectTimeout:1000
その中で、Service-IDはリボンで使用される仮想ホスト名です。これは一般に、Eurekaサーバーに登録されているサービス名と同じです。つまり、 spring.application.nameと同じです。
Feignのタイムアウト
Spring Cloud Edgwareから始めて、Feignはプロパティを使用したタイムアウトの構成をサポートします。
feign:client:config:feinname:connecttimeout:5000 readtimeout:5000
古いバージョンについては、 feign.Request.Optionsを書くことができますorg.springframework.cloud.netflix.feign.ribbon.FeignRibbonClientAutoConfiguration#feignRequestOptions執筆方法を参照してください。
RESTTEMPLATEタイムアウト
時々、rettemplateを使用する場合があります。
@bean@loadbalancedpublic resttemplate resttemplate(){return new resttemplate();}この時点で、タイムアウトは次のように設定できます。
@Bean@LoadBalancedpublic RestTemplate restTemplate() {SimpleClientHttpRequestFactory simpleClientHttpRequestFactory = new SimpleClientHttpRequestFactory();simpleClientHttpRequestFactory.setConnectTimeout(1000);simpleClientHttpRequestFactory.setReadTimeout(1000);return new RESTTEMPLATE(SimpleClientHttpRequestFactory);}ズールのタイムアウト
ZuulはリボンとHystrixを統合するため、Zuulのタイムアウトはより複雑です。以下は2つの状況です。
Zuulのルートがリボンを使用している場合
次に、ZuulのタイムアウトはリボンとHystrixに関連しています。この時点で、Zuulのタイムアウトは次のように構成できます。
Hystrix:コマンド:デフォルト:実行:分離:スレッド:TimeoutinMilliseConds:1000Ribbon:ReadTimeOut:1000 ConnectTimeout:1000
コード分析:この場合、Zuulの転送に使用されるフィルターは、 org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilterです。
Zuulのルートがリボンを使用していない場合
例:Zuulのルーティング構成は次のとおりです。
Zuul:Routes:User-Route:#この構成方法では、ユーザールートはルートに名前を与え、自由に名前を付けることができます。 url:http:// localhost:8000/#指定されたurl path:/user/**#URLに対応するパス。
次に、この時点でのZuulのタイムアウトは、次の2つの構成にのみ関連しています。
Zuul:Host:Socket-TimeOut-Millis:10000 Connect-TimeOut-Millis:2000
コード分析:URLルーティングを直接構成する方法は、リボンやヒスストリックスには使用されません。 Zuulの転送に使用されるフィルターは、 org.springframework.cloud.netflix.zuul.filters.route.SimpleHostRoutingFilterです。このフィルターでは、ZuulはApache httpclientを使用して転送します。
実際のシナリオでは、2つのルーティング方法を組み合わせて使用する場合があるため、上記のすべての属性を構成することをお勧めします。
Hystrixタイムアウト
Hystrix:コマンド:デフォルト:実行:タイムアウト:有効:True Isolation:Thread:TimeoutinMilliseConds:1000
上記のように、Hystrixのデフォルトのタイムアウトは1秒です。タイムアウトメカニズムはデフォルトで有効になります。 Hystrixのタイムアウトをオフにするには、 xxx.enabledをfalseに設定します。
ヒント
コンポーネントがHystrixで使用されている場合、通常、Hystrix Timeout>他のコンポーネントタイムアウトを推奨することをお勧めします。
要約します
上記は、この記事のコンテンツ全体です。この記事の内容には、すべての人の研究や仕事に特定の参照値があることを願っています。ご質問がある場合は、メッセージを残してコミュニケーションをとることができます。 wulin.comへのご支援ありがとうございます。