(四十)春の雲マイクロアーキテクチャB2B2C電子商取引サービス - サービスのフォールトトレラント保護(Hystrixサービスの低下)

3536247259:ソースの電子商取引プラットフォームペンギンBEGを追加してください。あなたは春のクラウドHystrixはブレーカーを達成使用を開始する前に、私たちは前に実装するための基礎として取得何か、を含みます:

ユーレカ・サーバー・プロジェクト:サービスレジストリ、ポート:1001

ユーレカ・クライアントプロジェクト:サービスプロバイダは、開始ポート2001の2つの例です

ユーレカ・消費者リボン、ユーレカ・消費者・リボンhystrixの名前:今、私たちは前に消費者サービスの実装にそれをコピーすることができます。ここでは、でそれらを変更し始めます。

ステップ:スプリングクラウドスタータhystrix依存で導入依存ノードのpom.xml:

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>

ステップ2:使用@EnableCircuitBreaker @EnableHystrix注釈アプリケーションや使用されるオープンHystrixのメインクラス:

@EnableCircuitBreaker
@EnableDiscoveryClient
@SpringBootApplication
public class Application {

	@Bean
	@LoadBalanced
	public RestTemplate restTemplate() {
		return new RestTemplate();
	}

	public static void main(String[] args) {
		new SpringApplicationBuilder(Application.class).web(true).run(args);
	}

}

注意:ここで我々はまた、@SpringCloudApplicationメインクラス春クラウドアプリケーションアノテーションを使用して変更することができ、示されたアノテーションを具体的に定義されました。私たちは、注釈が私たちの3引用上の注意事項が含まれていることを見ることができ、これは、標準のアプリケーションが春のクラウドサービスの発見と回路ブレーカを含むべきであることを意味します。

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootApplication
@EnableDiscoveryClient
@EnableCircuitBreaker
public @interface SpringCloudApplication {
}

第三段階:サービスの消費パターン、新しいConsumerServiceクラス、コントローラの過去に、論理移行の転換。最後に、サービスをダウングレードする方法を指定するには、論理的な増加@HystrixCommand注釈を実行するための具体的な機能に、例えば:

@RestController
public class DcController {

    @Autowired
    ConsumerService consumerService;

    @GetMapping("/consumer")
    public String dc() {
        return consumerService.consumer();
    }

    class ConsumerService {

        @Autowired
        RestTemplate restTemplate;

        @HystrixCommand(fallbackMethod = "fallback")
        public String consumer() {
            return restTemplate.getForObject("http://eureka-client/dc", String.class);
        }

        public String fallback() {
            return "fallback";
        }

    }

}

のは、上記のHystrixがもたらす確認するために、いくつかの基本的な機能を見てみましょう。サービス:[ユーレカ-消費者リボンhystrix、ユーレカ-クライアント] 2101 /消費者、そしてあなたのような通常のリターンを、得ることができます:我々は、最初に起動した後、ローカルホストを訪問サービスに関与しています。

サービス低下のロジックをトリガーするためには、我々のような、いくつかの遅延を追加する論理サービスプロバイダユーレカ・クライアントになることができます。

@GetMapping("/dc")
public String dc() throws InterruptedException {
    Thread.sleep(5000L);
    String services = "Services: " + discoveryClient.getServices();
    System.out.println(services);
    return services;
}

その後、再起動ユーレカ・クライアント、およびローカルホストにアクセスしようとした後:フォールバック:2101 /消費者が、今回は返します値を取得します。サービスコンシューマは、サービス要求のタイムアウト例外をトリガしながら、返す前にユーレカ・クライアントコンソールから、あなたはサービスプロバイダーの出力の結果が返されなければならなかった、見ることができるため、5秒の遅延に私たちは、サービスコンシューマHystrixCommandコメントを通じて指定されたロジックの実行が劣化し、その要求の結果は、フォールバックを返すように。セルフサービスのような機構は、基盤を保護するために役立った、だけでなく、サービスの劣化メカニズムの自動切り替えが異常で提供します。

おすすめ

転載: blog.csdn.net/wiyzq/article/details/90901839