ダボ(6)ダボ+ Hystrixがサービス&&ヒューズ溶断ダッシュボードを達成

雪崩

マイクロサービスアーキテクチャでは、一つのサービスに分割するサービスによれば、各RPCサービスによって、サービス間で呼び出すことができます。
可用性を確保するために、単一のサービスは、多くの場合、展開をクラスタ化します。
多数の要求の流入は、サーブレットコンテナのスレッドのリソースが完成消費される場合は、ネットワーク上の理由として、あるいは自分自身の理由のために、サービスの単一のサービスの問題が発生した場合、このサービスを呼び出すために、100%が利用可能保証するものではありませんが、スレッドは、この時点で、ブロックされます、サービスの麻痺になります。
サービスおよびサービスの障害の間の依存関係広がっていく、全体のマイクロシステムにサービスを提供しますが、悲惨な深刻な影響を持っている、これは「なだれ」効果のサービス障害です。
この問題を解決するために、業界では、ヒューズのモデルを作りました。
春クラウド内Hystrixを使用して


1、サービスプロバイダ実装Hystrix

依存追加

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
    <version>2.0.1.RELEASE</version>
</dependency>

@EnableHystrixでアプリケーションノートの増加

@EnableHystrix
@SpringBootApplication
public class DubboProviderApplication {
    public static void main(String[] args) {
        SpringApplication.run(DubboProviderApplication.class, args);
        Main.main(args);
    }
}

@HystrixCommandサービス注釈の増加
増加が呼び出すメソッドで構成され、その後、呼び出しはHystrixエージェントを通過します@HystrixCommand。

@Service(version = "${user.service.version}")
public class UserServiceImpl implements UserService {

    @Value("${dubbo.protocol.port}")
    private String port;

    @HystrixCommand(commandProperties = {
            @HystrixProperty(name = "circuitBreaker.requestVolumeThreshold", value = "10"),
            @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "2000")
    })
    @Override
    public String sayHi() {
//        return "Hello Dubbo, i am from port:" + port;
        throw new RuntimeException("Exception to show hystrix enabled.");
    }
}

sayHiメソッドは例外ではなく、いわゆるディスプレイ・サーバ500エラーなどをスロー。これは、ページの異常に表示された情報が表示されます。例外はhystrixが有効に示すこと。


hystrixを達成するために2、サービスコンシューマ

Hystrixやサービスプロバイダーはほぼ同じことを達成するためには、唯一の呼び出し方法にコメントを@HystrixCommand追加と方法fallbackMethodを指定する必要があります

@RestController
public class UserController {

    @Reference(version = "${user.service.version}")
    private UserService userService;

    @HystrixCommand(fallbackMethod = "hiError")
    @RequestMapping(value = "hi")
    public String sayHi() {
        return userService.sayHi();
    }

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

こんにちは呼び出し方法は、ブラウザがHystrixフォールバックを表示します。代わりに500エラーの


3、ヒューズダッシュボード

2つのリノベーションプロジェクトと同じようにHystrixダッシュボードプロバイダとコンシューマプロジェクトを増やします。

増加依存

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
    <version>2.0.1.RELEASE</version>
</dependency>

@EnableHystrixDashboardでアプリケーションノートの増加

@EnableHystrix
@EnableHystrixDashboard
@SpringBootApplication
public class DubboProviderApplication {
    public static void main(String[] args) {
        SpringApplication.run(DubboProviderApplication.class, args);
        Main.main(args);
    }
}

サーブレットの設定hystrix.streamの作成

@Configuration
public class HystrixDashboardConfiguration {
    @Bean
    public ServletRegistrationBean getServlet() {
        HystrixMetricsStreamServlet streamServlet = new HystrixMetricsStreamServlet();
        ServletRegistrationBean registrationBean = new ServletRegistrationBean(streamServlet);
        registrationBean.setLoadOnStartup(1);
        registrationBean.addUrlMappings("/hystrix.stream");
        registrationBean.setName("HystrixMetricsStreamServlet");
        return registrationBean;
    }
}

テストHystrixダッシュボード
のアクセス、ブラウザでhttp:// localhostを:9090 / hystrixインタフェースは次のようされています。
ここに画像を挿入説明

公開された44元の記事 ウォンの賞賛5 ビュー897

おすすめ

転載: blog.csdn.net/qq_40634246/article/details/104661252