はじめに:
最近、新入社員は、会社がSpringCloudについて調べるために前にそこに、SpringCloudを使用していますが、長い時間のためにそれを忘れがちである使用しないように設定していないので、暇な時間はSpringCloudを再検討します。オープンバージョンSpringCloudは少し低いかもしれない前に、しかし、同社は現在、「2.1.xの」バージョンを使用SpringBoot、バージョンの「Greenwich.RELEASE」を使用していることは比較的新しいので、Hystrix-ダッシュボードを使用している場合は少しピットになりますしたがって、私はピット、記録を踏むと思っているので離れてピットからのより多くの人々、騒ぎ、開始!
まず、Hystrix・ダッシュボードの監視サービスを作成します。springcloud-hystrix、ダッシュボード
- エンジニアリングポンポン依存
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.gxc.test</groupId>
<artifactId>springcloud-hystrix-dashboard</artifactId>
<version>1.0.0</version>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
- YMLプロフィール
server:
port: 10000
spring:
application:
name: springcloud-hystrix-dashboard
- 起動クラスに@EnableHystrixDashboard注釈を追加します。
@EnableHystrixDashboard
@SpringBootApplication
public class HystrixDashboardApplication {
public static void main(String[] args) {
SpringApplication.run(HystrixDashboardApplication.class, args);
}
}
- スタート!アクセスアドレスブラウザ:HTTP:// localhostを:10000 / hystrix、下図のように:
第二に、レジストリユーレカを作成します。springcloud-ユーレカサーバ
一部の読者は、求めることができる:Hystrix-ダッシュボードがそれを言っているのではない遊びますか?なぜユーレカを使用する必要がありますか?
:私はピットのタイトルを言う理由である、ダウン見て我慢してください...
- エンジニアリングポンポン依存
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.gxc.test</groupId>
<artifactId>springcloud-hystrix-dashboard</artifactId>
<version>1.0.0</version>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
- YMLプロフィール
server:
port: 9000
spring:
application:
name: springcloud-eureka-server
eureka:
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://127.0.0.1:${server.port}/eureka
- クラスは、注釈を追加起動します。@EnableEurekaServer
@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
- スタート!ブラウザアクセス:HTTP:// localhostを:9000 /、以下に示すように:
第三に、監視対象サービスを作成します。springcloudユーザーを
- エンジニアリングポンポン依存
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.gxc.test</groupId>
<artifactId>springcloud-user</artifactId>
<version>1.0.0</version>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<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-hystrix</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
- YMLプロフィール
server:
port: 10001
spring:
application:
name: springcloud-user
# 将服务注册到Eureka注册中心
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:9000/eureka
instance:
prefer-ip-address: true
instance-id: ${spring.application.name}:${server.port}
feign:
hystrix:
enabled: true
- コメントの起動クラスを追加します。
//@EnableCircuitBreaker
//@EnableEurekaClient
//@EnableFeignClients
//@SpringBootApplication
// 以上四个注解可以用如下两个注解取代
@EnableFeignClients
@SpringCloudApplication
public class UserApplication {
public static void main(String[] args) {
SpringApplication.run(UserApplication.class, args);
}
}
- テストクラスのコントローラを作成します。
@RestController
public class UserController {
@GetMapping("/user")
public Object getUser() {
Map<String, Object> user = Maps.newHashMap();
user.put("username","GongXincheng");
user.put("age", 23);
user.put("birthday", new Date());
return user;
}
}
- スタート!ブラウザアクセス:HTTP:// localhostを:10001 /ユーザー、下図のように:
第四に、テストHystrix-ダッシュボードは、ユーザーサービスを監視します
- ブラウザアクセス:HTTP:// localhostを:10001 / hystrix.stream、404が行われている
説明:SpringBoot 2.0は、単にアクチュエータを追加する前に依存して、最初のピットは、404エラーではありません
- 404問題を解決するには:プロファイルクラスを作成し、サーブレットを登録します
@Configuration
public class ServletConfigBean {
@Bean
public ServletRegistrationBean hystrixMetricsStreamServlet() {
ServletRegistrationBean regist = new ServletRegistrationBean();
regist.setServlet(new HystrixMetricsStreamServlet());
regist.setName("hystrixMetricsStreamServlet");
regist.setLoadOnStartup(1);
regist.addUrlMappings("/hystrix.stream");
return regist;
}
}
- ブラウザアクセス:HTTP:// localhostを:10001 / hystrix.stream、下図のように:
リンクの最初のステップ:HTTP:// localhostを:10001 / hystrix.stream、Hystrix・ダッシュボードページにコピー
Hystrix-ダッシュボードには常に...、これが2回目のピットでロードされます...
- ソリューション:
1:创建另一个服务(例如:springcloud-order)
2:将新的服务(order)注册到Eureka
3:在user服务写一个新的Api接口,通过 Feign 访问新服务(order)的Api接口
4:注意:经过本人测试通过RestTemplate的方式调用,仍然没有效果。
5:当通过Feign调用一次新服务(order)后,hystrix.stream 正常,效果如下:
- コントローラレベルのコード
@RestController
public class UserController {
private static final String ORDER_SERVER_URL = "http://springcloud-order";
@Resource private OrderFeign orderFeign;
@Resource private RestTemplate restTemplate;
@GetMapping("/user")
public Object getUser() {
Map<String, Object> user = Maps.newHashMap();
user.put("username","GongXincheng");
user.put("age", 23);
user.put("birthday", new Date());
return user;
}
@GetMapping("/feign/order")
public Object feignGetOrder() {
return orderFeign.getOrder();
}
@GetMapping("/rest/order")
public Object restGetOrder() {
return restTemplate.getForObject(ORDER_SERVER_URL + "/order", Object.class);
}
}
8:ユーザーサービスとオーデルサービスディレクトリ構造と関連するコード
ファイブ:コードへのリンク
https://gitee.com/gxc6/gxc-springcloud-study
何か間違った場所がある場合、私は助けて修正するために歓迎!ありがとう!
私はこれをしてきた... ... 3時を完了するために滑って転落しました...