開始して直接コピーするだけで、マイクロサービスを構築できます(Hoxton.SR8)2020.8.28がリリースされ、SpringCloudによって構築された記事が整理されています。乾物をお見逃しなく
-
SpringCloudマイクロサービスはXiaobai(Hoxton.SR8)でも使用できます(1)Eureka |サービスの登録と検出
-
Xiaobaiが利用できるSpringCloudマイクロサービス(Hoxton.SR8)(3)Feign | Service Consumers
-
SpringCloudマイクロサービスXiaobaiも利用できます(Hoxton.SR8)(4)Hystrix | Circuit Breaker
-
SpringCloudマイクロサービスXiaobaiも利用できます(Hoxton.SR8)(5)ダッシュボード/タービン|サーキットブレーカーモニタリング
-
SpringCloudマイクロサービスXiaobaiも(Hoxton.SR8)(6)Zuul | ServiceGatewayを利用できます
-
SpringCloudホワイトマイクロサービスは(Hoxton.SR8)(7)ゲートウェイ|サービスゲートウェイを取ることができます
-
SpringCloudホワイトマイクロサービスは(Hoxton.SR8)(8)Sleuth | Link TrackingServiceを利用できます
概要
Hystrix Dashboardは、Spring CloudでHystrixインスタンスの実行を表示するためのダッシュボードコンポーネントであり、個々のインスタンスの表示とクラスターインスタンスの表示をサポートします。Hystrixは、HystrixCommandメソッドの実行をリアルタイムで監視するHystrixダッシュボードを提供します。Hystrixダッシュボードは、各Hystrixインスタンスの実行ステータスを効果的に反映できるため、システムの問題をすばやく発見し、対応する対策を講じることができます。
1.hystrix-dashboardサービスを作成します
1.1pom.xmlの新しいダッシュボードの依存関係
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!-- 包含了web -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
</dependency>
</dependencies>
1.2スタートアップクラスに@EnableCircuitBreakerと@EnableDiscoveryClientを追加しました
package com.zqh.www;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;
import org.springframework.core.env.Environment;
/**
* 开启服务发现客户端
*
* @EnableEurekaClient只适用于Eureka作为注册中心,@EnableDiscoveryClient 可以是其他注册中心。
*/
@EnableDiscoveryClient
/**
* 开启监控
*/
@EnableHystrixDashboard
@SpringBootApplication
public class HystrixDashboardApplication {
private final static Logger logger = LoggerFactory.getLogger(HystrixDashboardApplication.class);
public static void main(String[] args) {
Environment env = SpringApplication.run(HystrixDashboardApplication.class, args).getEnvironment();
logger.info(
"\n----------------------------------------------------------\n\t"
+ "Application '{}' is running! Access URLs:\n\t"
+ "Local: \t\thttp://localhost:{}{}"
+ "\n----------------------------------------------------------",
env.getProperty("spring.application.name"), env.getProperty("server.port"),
env.getProperty("server.servlet.context-path") != null ? env.getProperty("server.servlet.context-path") : "");
}
}
1.3マール
server:
port: 8089
spring:
application:
name: hystrix-dashboard
eureka:
client:
service-url:
#注册地址
defaultZone: http://root:root@localhost:8081/eureka/
#显示服务器IP加端口
instance:
hostname: localhost
prefer-ip-address: true
instance-id: ${spring.cloud.client.ip-address}:${server.port}
# is not in the allowed list of proxy host names. If it should be allowed add it to hystrix.dashboard.proxyStreamAllowList.
hystrix:
dashboard:
proxy-stream-allow-list: "localhost"
1.4サービスを開始する
訪問:クリックしてダッシュボードサービスにアクセス:http:// localhost:8089 / hystrix
注:httpsを使用していないため、入力するときにhttpを入力します
1.5hystrix-serviceサービスのHystrixServiceApplicationにリスナーを追加します
注:これはhystrix-serviceサービスにあります
package com.zqh.www;
import com.netflix.hystrix.contrib.metrics.eventstream.HystrixMetricsStreamServlet;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.cloud.client.SpringCloudApplication;
import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.context.annotation.Bean;
import org.springframework.core.env.Environment;
/**
* 开启断路器功能
*/
@EnableCircuitBreaker
/**
* 开启服务发现客户端
* @EnableEurekaClient只适用于Eureka作为注册中心,@EnableDiscoveryClient 可以是其他注册中心。
*/
@EnableDiscoveryClient
@SpringBootApplication
/**
* 可以取代上面三个
*/
@SpringCloudApplication
public class HystrixServiceApplication {
private final static Logger logger = LoggerFactory.getLogger(HystrixServiceApplication.class);
public static void main(String[] args) {
Environment env = SpringApplication.run(HystrixServiceApplication.class, args).getEnvironment();
logger.info(
"\n----------------------------------------------------------\n\t"
+ "Application '{}' is running! Access URLs:\n\t"
+ "Local: \t\thttp://localhost:{}{}"
+ "\n----------------------------------------------------------",
env.getProperty("spring.application.name"), env.getProperty("server.port"),
env.getProperty("server.servlet.context-path") != null ? env.getProperty("server.servlet.context-path") : "");
}
/**
* 解决问题:Dashboard显示Unable to connect to Command Metric Stream。
*
* @return
*/
@Bean
public ServletRegistrationBean getServlet() {
HystrixMetricsStreamServlet streamServlet = new HystrixMetricsStreamServlet();
ServletRegistrationBean registrationBean = new ServletRegistrationBean(streamServlet);
registrationBean.setLoadOnStartup(1);
registrationBean.addUrlMappings("/actuator/hystrix.stream");
registrationBean.setName("HystrixMetricsStreamServlet");
return registrationBean;
}
}
1.6Hystrixダッシュボードページのコンテンツを入力します
注:
パラメーターの最初の行は、監視する必要があるサービスリンクを入力することです
パラメータの2行目は、サービス名を入力することです。入力できます。これは単なる名前です。監視する必要のあるサービス名と同じにすることをお勧めします。
2.Hystrixダッシュボードチャート分析
3.Hystrixクラスターインスタンスの監視
サービスがクラスター化されている場合はどうなりますか?Turbineはhystrix-serviceサービスの監視情報を集約でき、次にhystrix-dashboardサービスはTurbineから集約された監視情報を取得できます。
3.1タービンサービスモジュールを作成する
3.2pom.xmlの新しいタービン依存関係
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-turbine</artifactId>
</dependency>
</dependencies>
3.3@EnableTurbineと@EnableDiscoveryClientをスタートアップクラスに追加します
package com.zqh.www;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.turbine.EnableTurbine;
import org.springframework.core.env.Environment;
/**
* 开启服务发现客户端
*
* @EnableEurekaClient只适用于Eureka作为注册中心,@EnableDiscoveryClient 可以是其他注册中心。
*/
@EnableDiscoveryClient
/**
* 开启监控
*/
@EnableTurbine
@SpringBootApplication
public class TurbineHystrixApplication {
private final static Logger logger = LoggerFactory.getLogger(TurbineHystrixApplication.class);
public static void main(String[] args) {
Environment env = SpringApplication.run(TurbineHystrixApplication.class, args).getEnvironment();
logger.info(
"\n----------------------------------------------------------\n\t"
+ "Application '{}' is running! Access URLs:\n\t"
+ "Local: \t\thttp://localhost:{}{}"
+ "\n----------------------------------------------------------",
env.getProperty("spring.application.name"), env.getProperty("server.port"),
env.getProperty("server.servlet.context-path") != null ? env.getProperty("server.servlet.context-path") : "");
}
}
3.4戻る
server:
port: 8090
spring:
application:
name: turbine-service
eureka:
client:
service-url:
#注册地址
defaultZone: http://root:root@localhost:8081/eureka/
#显示服务器IP加端口
instance:
hostname: localhost
prefer-ip-address: true
instance-id: ${spring.cloud.client.ip-address}:${server.port}
turbine:
# 指定需要收集信息的服务名称
app-config: hystrix-service
# 指定服务所属集群
cluster-name-expression: new String('default')
# 以主机名和端口号区分服务
combine-host-port: true
3.5サービスの開始
注:サービスクラスターであるため、複数のサービスに対して同じサービスを有効にする必要があります。監視するサービスはhystrix-serviceであるため、2つ以上のhystrix-servicesを有効にする必要があります。ロード操作が有効になっていない場合は、SpringCloudマイクロサービスにアクセスしてください。Xiaobaiは(Hoxton.SR8)(2)リボン|消費者にサービスを提供することもできます
アクセス:します。http:// localhost:8089 /ダッシュボードサービスにアクセスするためにクリックして
hystrixの引数の最初の行を再入力します。:注は、先ほど作成したアドレス宛に、タービン・サービスアクセス埋めるためであるHTTP:// localhostを:8090 / turbine.streamを
-
クラスター内の数は2になります。当初は、パラメーターの最初の行を使用してhystrix-serviceを直接指していましたが、その後、指定されたサービスに関する情報を収集するためにターボサービスサービスを追加しました。パラメーターの最初の行はターボに変更されました。 -サービス
4.まとめ
- hystrix-dashboardを使用してhystrixを監視します
- タービンを使用してダッシュボード情報を収集し、均一に管理します