春の雲(C):サービスのフォールトトレラント保護--SpringクラウドHystrix

  マイクロサービスアーキテクチャでは、現象は、通常のサービスとして、サービスが利用できない次いでときAは、発信者のサービスプロバイダ、サービスへの発信者B、C、DのBのサービスであると仮定すると、利用できない発生します時間が経つにつれて、それはBサービスを利用できなくつながる、サービス利用できないBは、分散型アーキテクチャの故障をカスケードこの問題を解決するために、最終的に使用不能システム全体につながる、使用不能C、Dサービスをもたらすことができます直列回路ブレーカと他の保護サービス。

  Hystrix春クラウドでブレーカーを達成使用し、春の雲Hystrixは、オープンソースNetflixのフレームワークHystrixの実装に基づいています。ヘルス(健康サービス要求の状態=要求の失敗の数/総数)と比較することによって決定された設定閾値(デフォルトは10秒以内に20台の故障)の現在のサービス状態によって開状態から回路遮断器をオフにします。ブレーカースイッチが回路遮断器を介して要求を許可、オフ時の健康の現在のサービス状態が設定された閾値よりも高い場合、スイッチがオフのままで、現在のサービス状態が設定された閾値未満である場合、スイッチが開状態に切り換えられます。ブレーカースイッチがオンされると、要求は、フォールバック方法が提供されている場合、回路ブレーカーのスイッチが時間をかけて、回路遮断器を自動的に半開状態に入り、オンを介して要求を許可された場合、処理は、フォールバックに入り、禁止しますコール要求が成功した場合、ブレーカーがオフの状態に戻す、または開いたままになります。

  :このセクションでは、プロジェクト単位、プロジェクトのアドレスに基づいて構築されhttps://github.com/francis785/springclouddemo.git  あなただけの次の手順を行うことができますが、春の雲Hystrixを使用するには、:

1.作成  springcloud・デモ・ユーザーhystrixの  モジュールを、  のpom.xml  次のように文書が読み取ります。

<?xmlのバージョン= " 1.0 "エンコード= " UTF-8 "?> 
<プロジェクトのxmlns = " http://maven.apache.org/POM/4.0.0 " 
         のxmlnsを:XSI = " のhttp://www.w3 .ORG / 2001 / XMLスキーマ・インスタンス" 
         のxsi:のschemaLocation = " http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd  > 
    <親> 
        <たartifactId> springcloud-デモ親</たartifactId> 
        <groupIdを> com.fix </ groupIdを> 
        <バージョン> 1.0 -snapshot </バージョン>
    </親> 
    <modelVersion>4.00 </ modelVersion> 

    <たartifactId> springcloud-デモ・ユーザーhystrix </たartifactId> 
    <依存> 
        <! -必要性はの導入に依存するときフィンチリー、春の雲のグリニッジバージョンは、クライアントプロジェクトを作成します- > 
        <依存関係> 
            <groupIdを> org.springframework.boot </ groupIdを> 
            <たartifactId>スターター・春ブーツ・ウェブ</たartifactId> 
        </依存関係> 
        <依存> 
            <groupIdを> org.springframework.cloud </ groupIdを> 
            <たartifactId> -Cloud-スタータースプリングネットフリックス-ユーレカ・クライアント</たartifactId> 
        </依存関係> 
        <! - hystrixブレーカーのサポート- > 
        <依存>
            <groupIdを> org.springframework.cloud </ groupIdを>
            <たartifactId>春・クラウド・スタータNetflixの-hystrix </たartifactId> 
        </依存関係> 
        <! - hystrixCommandAspect的初始化依赖于com.google.common.collect.ImmutableMap - > 
        <依存> 
            <groupIdを> com.google .guava </ groupIdを> 
            <たartifactId>グアバ</たartifactId> 
            <バージョン> 28.0 -jre </バージョン> 
        </依存関係> 
    </依存関係> 
</プロジェクト>

2.書き込み  application.yaml  :

サーバー:
  ポート:8030 
ユーレカ:
  インスタンス:
    好む -ip-アドレスを:trueに     #Ipは、ホストか
  クライアント:
    サービス - URL:
      defaultzone:HTTP:// localhostを:ユーレカサーバーアドレスを指定するには8761 /ユーレカ/# 

  アプリケーション:
    名前:springcloud -demo-ユーザーhystrix

3.メインクラス書く  UserHystrixMainを  、としてクラスをマスターする  @EnableCircuitBreakerの  NOTE開回路ブレーカ機能を示します。

@SpringBootApplication 
@EnableEurekaClient @EnableCircuitBreaker

パブリック クラスUserHystrixMain {
     公共 静的 ボイドメイン(文字列[]引数){ 
        SpringApplication.run(UserHystrixMain。クラス、引数)。
    } 

    @Beanは
    @LoadBalanced 
    公共RestTemplate initRestTemplateは(){
         戻り 新しい)(RestTemplateします。
    } 
}

4.調製  UserControllerで  、及び  findOrderByUser()  上記プラスの方法  @HystrixCommand  コールバックメソッドを指定する注釈:

@RestController
 パブリック クラスUserControllerで{ 
    @Autowired 
    プライベートRestTemplate RestTemplate; 

    / * * 
     *注文情報問合せユーザIDに従って
     * @param IDをユーザID 
     * @returnユーザ注文情報
     * / 
    @GetMapping(" / findOrderByUser / {ID} " @HystrixCommand (fallbackMethod = " fallBackMethod " パブリック文字列findOrderByUser(@PathVariable文字列ID){
         int型注文ID = 123 ;
         戻り 、この(.restTemplate.getForObjectを"HTTP:// SPRINGCLOUD-DEMO-ORDER /ご注文/ "。+注文ID、文字列クラス); 
    } 

    / * * 
     *ご注文お問い合わせコールインタフェース情報を返すために失敗した後
     *上記のid述べ@param 
     * @return 
     * / 
    パブリック文字列fallBackMethodを(@PathVariable ID文字列){
         リターン " サービスは、現在のクエリ= IDは使用できません" + ID; 
    } 
}

機能検証

  サービス登録センターだけでなく、他のモジュールを起動するために、サービスは、次のサービスレジストリのインスタンスがあります。

  ブラウザでのアクセス:HTTP:// localhostを:8030 / findOrderByUser / 1  にアクセスすることができます:

  そして、近い  springcloud-デモオーダー  サービス、訪問していきます。httpを:// localhostを:8030 / findOrderByUser / 1 リンク、それは、以下の情報を求めるプロンプトが表示されます:

  説明春クラウドHystrixが有効になります。

おすすめ

転載: www.cnblogs.com/fengweiweicoder/p/11075054.html