統合されたリボン、装う、およびHystrix

1.Ribbon、装う関連の発表

リボンは、プロセッサの負荷分散され、そこに、我々microServiceはあなたが通信アドレスを介して他のマイクロサーバにアクセスすることができ、レジストリを介して、通信リストをプルする際に、他のマイクロサーバは、クラスタをすれば、リボンはspringcloudの構成部品でありますマイクロ複数のサービス、全てがマイクロサービスを訪問するために行った場合、エンドマイクロサービスでは、我々は、それをアクセスし、そのサービスがアクセスされるマイクロので、サーバーや爆発にアクセスするかもしれない、あまりにも多くのスレッド、他のサーバーが、アイドル中、私たちは、私たちはこれらの要求に対処する助け、助け、私たちのこれらの要求の合理的な配分にロードバランサに必要である、リボンはこの役割である、リボンのデフォルトはポーリング要求処理、ならびにランダム、一貫性のあるハッシュとして他のもので、これはそう、加重やり方はディストリビューションを要求しました。

リボンに基づいてプロセッサの負荷分散も装う、リボンは、HTTPとTCPクライアントのバランスをとるツールベースの負荷があります。
これは、クライアントRibbonServerList(サーバリスト)で構成、またはHttpClientをRestTemplateアナログHTTP要求、手順を使用して、かなり面倒であることができます。

装う

装うがリボンに基づいて改善され、HTTPクライアントを使用する方が便利です。
インタフェースとして、唯一のあなたは、あなたは上記の注釈を追加することができ、インターフェイスを作成する必要があり、この方法は、他のサービスを呼び出す必要があります抽象メソッドとして定義され、自分自身のHTTPリクエストを構築する必要はありません。
その後、自身が呼び出し元のように動作し、かつフィーリングがリモートメソッドを呼び出すことでメソッドを呼び出して、クライアントが非常に簡単に書くことができます。

ステップ2.コードの実装リボン

1.輸入依存度

< 依存性> 
    < のgroupId > org.springframework.cloud </ のgroupId > 
    < たartifactId >ばねクラウドスタータNetflixのリボン</ たartifactId > 
</ 依存>

2.ノートはリターンrestTemplate Beanのメソッドにマークされ、注釈がrestTemplateロードバランシングを持ってすることができます@LoadBalanced

@Configuration
 パブリック クラス{BeanConfig
     / ** 
     * @LoadBalancedは能力のバランスを取るリボンrestTemplate負荷になります注意事項を打った後、
     * @return 
     * / 
    @Bean 
    @LoadBalanced 
    公共RestTemplate restTemplate(){
         返す 新しい新しいRestTemplateを(); 
    } 
}

コントローラ呼び出し方法変更「の文字列のURL = :// userclient / userclient /ユーザー/ HTTP 通信アドレス登録センターuserclient、リソースへのアクセスに応じて、」+上記IDを上記

@GetMapping( "/順序/ {ID}" 公共化するJsonResult queryById(@PathVariableロングID){
         // 使用restTemplate发送HTTP协议 
        文字列のURL = "HTTP:// userclient / userclient /ユーザ/" + ID。
        ユーザーユーザー = template.getForObject(URL、ユーザークラス)。
        化するJsonResult化するJsonResult = 化するJsonResult(); 
        jsonResult.setData(ユーザ)。
        返却するJsonResultを。
    }

ステップ3装うためのコード

1.輸入依存度

< 依存性> 
  < のgroupId > org.springframework.cloud </ のgroupId > 
  < たartifactId >ばねクラウドスタータopenfeign </ たartifactId > 
</ 依存>

2.書き込み装うインターフェース

/ ** 
 *書き込み装うインターフェースユーザー・クライアントは、登録センターは、登録されたアプリケーション名
 * / 
@FeignClient(値 =「ユーザクライアント」のパブリック インターフェイスUserFeignClient {
     / ** 
     * @PathVariableに(「上記のID上」)が書き込まれなければなりません"ID"、さもなければ、注射できないUserFeignClient 
     * @paramのID 
     * @return 
     * / userclient /ユーザー/ {ID}は、サーバー・パス・リソースは、コールサーバに必要
     * / 
    @GetMapping( "/ userclient /ユーザー/ {ID}" 
    ユーザ(@PathVariable(queryById "ID" ロングIDを); 
}

3. [メイン設定クラス装う@ EnableFeignClients(「cn.learn.springcloud.feignclient」)

/ ** 
 * @EnableFeignClients( "cn.learn.springcloud.feignclient")主配置类开启fenign 
 * / 
@SpringBootApplication 
@EnableFeignClients( "cn.learn.springcloud.feignclient" パブリック クラスOrderClientApplication { 

    公共 静的 ボイドメイン(文字列[ ]引数){ 
        SpringApplication.run(OrderClientApplication。クラス)。
    } 

}

メソッドを呼び出す4.controller注入層インターフェイス

@RestController 
@RequestMapping( "/ orderclient" パブリック クラスUserControllerで{ 
    @Autowired 
    プライベートUserFeignClient userFeignClient。
    (@GetMapping "/順序/ {ID}" パブリックユーザqueryById(@PathVariableロングIDを){
         // 调用ふり的接口的方法 
        ユーザーユーザー= userFeignClient.queryById(ID)。
        リターンユーザー; 
    } 
}

3.Hystrix関連プレゼンテーション

hystrix機構を融合するために使用されるフレームワークですが、他のマイクロハングあれば、ないの訪問へのサービスは、それが原因、アバランシェ効果が発生しますときのコンポーネントに属しマイクロレジストリを通じてアクセスする他のサービスへの私たちの悪いサービスときにspringcloud他のサーバーの麻痺サーバーがハング、我々はマイクロアバランシェ効果と呼んで他のサービスのマイクロサービス麻痺の現象によって引き起こされ、このような麻痺は、この問題を解決するために、私たちはこの問題を解決するためのヒューズ機構hystrixのヘルプを導入springcloudあなたがアクセス権を持っていない、ハングアップされているサーバにアクセスする場合の後、我々は通常の友好のヒントに戻り、マイクロサービスを教えて、このサーバーが故障している、このサーバーをハングアップする際に隔離されているように、その後、なしそれはあなたがアクセスしたいサーバーの麻痺を引き起こす可能性があり、サーバは、他のサーバーの稼働時間をハングアップすることを確実にするために。

リボンhystrixで3.1の統合

1.輸入依存度

< 依存性> 
            < のgroupId > org.springframework.cloud </ のgroupId > 
            < たartifactId >ばねクラウドスタータのNetflix-hystrix </ たartifactId > 
</ 依存>

2.一次ヒューズ機構開放構成クラス@EnableCircuitBreaker

/ ** 
 * @EnableCircuitBreaker开启熔断机制
 * / 
@SpringBootApplication 
@EnableCircuitBreaker 
パブリック クラスOrderClientApplication { 

    公共 静的 ボイドメイン(文字列[]引数){ 
        SpringApplication.run(OrderClientApplication。クラス)。
    } 

}

データサービスへのアクセスがない場合3.戻り化するJsonResult道に優しいヒントは、我々は法に音符を演奏し、メソッドが返す結果の下部をドラッグする戻る@HystrixCommand(fallbackMethod =「getUserByIdFallback」

注:パラメータは、メソッドを支える、元と一貫した方法に結果を返します

@RestController 
@RequestMapping( "/ OrderClient" のパブリック クラスUserControllerで{ 
    @Autowired 
    プライベートRestTemplateテンプレート;
     / ** 
     * @HystrixCommand(fallbackMethod = "getUserByIdFallback")、下ドラッグメソッドタブマーク
     * @paramのID 
     * @return 
     * / 
    @HystrixCommand (fallbackMethod = "getUserByIdFallback" 
    @GetMapping( "/注文/ {ID}" 公共化するJsonResult queryById(ロング@PathVariable ID){
         // 送信restTemplateに使用するHTTPプロトコル 
        文字列のURL =「HTTP:// userclient / userclient / ユーザー/ "+ID; 
        ユーザーユーザー = template.getForObject(URL、ユーザー。クラス); 
        するJsonResult化するJsonResult = 新新化するJsonResult(); 
        jsonResult.setData(ユーザー); 
        リターンするJsonResult; 
    } 
    / ** 
     *ダウングレード方法、もしユーザがクライアントにアクセスできませんドラッグ下のデータ復帰方法
     * / 
    公共化するJsonResult getUserByIdFallback(ロング@PathVariable ID){ 
        化するJsonResult化するJsonResult = 新新化するJsonResult(); 
        jsonResult.setSuccess(falseに); 
        jsonResult.setMsg(「私は、サーバーシステムがビジー状態であるすみません、後でもう一度試してください」); 
        jsonResult.setData(NULL )。
        返却するJsonResultを。
    } 
}

3.2装う内で統合hystrix

1.輸入依存度

< 依存性> 
    < のgroupId > org.springframework.cloud </ のgroupId > 
    < たartifactId >ばねクラウドスタータのNetflix-hystrix </ たartifactId > 
</ 依存>

(値=「ユーザクライアント」、フォールバック= UserFeignClientFallback.class)、フォールバック= UserFeignClientFallback.class後部アクセス失敗2.変更ふりクライアントインターフェイス@FeignClient

メソッド呼び出しUserFeignClientFallbackこのクラスのリターン情報の友情

3.書き込みUserFeignClientFallback、ふりインターフェース、インターフェースメソッドふりオーバーライド(達成するドラッグ底)を達成

@Component
 パブリック  クラス UserFeignClientFallback 実装UserFeignClient { 
    @Overrideの
    公共ユーザーqueryById(ロングID){
         返す 新新(0、-1L、「私は申し訳ありませんが、サーバーが利用できない」ユーザーを); 
    } 
}

4.yml設定ファイル機構を融合有効にするために、装うヒューズ機構は、デフォルトでは無効になっています

ureka:
  クライアント:
    serviceURLの:
      defaultzone:HTTP:// peer0:1000 /ユーレカ/、HTTP://ピア1:1001 /ユーレカ/ 
  インスタンス:
    好む-IPアドレス:#は、レジストリの登録に真のIPに定義する
    インスタンスID:オーダー-client:2001 
サーバー:
  ポート:2001 
春:
  アプリケーション:
    名前:オーダークライアント-2001 
装う:
  hystrix:
    有効:吹きオープンサポート真#へ

おすすめ

転載: www.cnblogs.com/19930909a/p/12117193.html