springCloud Spring Boot mybatis分布式微服務雲架構-docker-hystrix-dashboard-turbine(九)

來源:互聯網
上載者:User

標籤:tor   server   cto   vat   idf   api   host   yml   blog   

 

簡介

Hystrix的主要優點之一是它收集關於每個HystrixCommand的一套指標。Hystrix儀表板以有效方式顯示每個斷路器的健全狀態,通過Hystrix Dashboard我們可以在直觀地看到各Hystrix Command的斷路器是否開啟,請求回應時間, 請求失敗率,請求逾時個數等等資料。但是只使用Hystrix Dashboard的話, 你只能看到單個應用內的服務資訊, 這明顯不夠. 我們需要一個工具能讓我們匯總系統內多個服務的資料並顯示到Hystrix Dashboard上, 這個工具就是Turbine,這節我們討論一下,怎麼用turbine+hystrix-dashboard監聽兩個消費者服務

一、監聽模組microservice-consumer-movie-feign-with-hystrix斷路器的健全狀態

http://www.cnblogs.com/520playboy/p/8066618.html

二、監聽模組microservice-consumer-movie-ribbon-with-hystrix1斷路器的健全狀態

2.1、建立模組microservice-consumer-movie-ribbon-with-hystrix1

項目結構如下:

 

 2.2、pom.xml檔案

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">    <parent>        <artifactId>microservice-spring-cloud</artifactId>        <groupId>com.jacky</groupId>        <version>1.0-SNAPSHOT</version>    </parent>    <modelVersion>4.0.0</modelVersion>     <artifactId>microservice-consumer-movie-ribbon-with-hystrix1</artifactId>    <packaging>jar</packaging>     <properties>        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>        <java.version>1.8</java.version>    </properties>     <dependencies>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-web</artifactId>        </dependency>         <dependency>            <groupId>org.springframework.cloud</groupId>            <artifactId>spring-cloud-starter-eureka</artifactId>        </dependency>         <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-actuator</artifactId>        </dependency>         <dependency>            <groupId>org.springframework.cloud</groupId>            <artifactId>spring-cloud-starter-hystrix</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.cloud</groupId>            <artifactId>spring-cloud-starter-zipkin</artifactId>        </dependency>    </dependencies>    <build>        <plugins>            <plugin>                <groupId>com.spotify</groupId>                <artifactId>docker-maven-plugin</artifactId>                <executions>                    <!--設定在執行maven 的install時構建鏡像-->                    <execution>                        <id>build-image</id>                        <phase>install</phase>                        <goals>                            <goal>build</goal>                        </goals>                    </execution>                </executions>                <configuration>                    <!--安裝了docker的主機,並且開啟了api remote介面設定-->                    <dockerHost>http://192.168.6.130:5678</dockerHost>                    <pushImage>true</pushImage><!--設定上傳鏡像到私人倉庫,需要docker設定指定私人倉庫地址-->                    <!--鏡像名稱-->                    <imageName>${docker.repostory}/${docker.image.prefix}/${project.artifactId}:${project.version}</imageName>                    <!--鏡像的基礎版本-->                    <baseImage>java:openjdk-8-jdk-alpine</baseImage>                    <!--鏡像啟動參數-->                    <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>                    <resources>                        <resource>                            <targetPath>/</targetPath>                            <directory>${project.build.directory}</directory>                            <include>${project.build.finalName}.jar</include>                        </resource>                    </resources>                </configuration>            </plugin>        </plugins>    </build></project>

2.3、設定檔application.yml

spring:  application:    name: microservice-consumer-movie-ribbon-with-hystrix1  sleuth:    sampler:      percentage: 1.0  #zipkin:    #base-url: http://localhost:7788server:  port: 8010eureka:  client:    healthcheck:      enabled: true    serviceUrl:      defaultZone: http://jacky:[email protected]:8761/eureka/,http://jacky:[email protected]:8762/eureka/,http://jacky:[email protected]:8763/eureka/  instance:    prefer-ip-address: true    instance-id: ${spring.application.name}:${spring.cloud.client.ipAddress}:${spring.application.instance_id:${server.port}}hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 5000#security:  #oauth2:   # resource:    #  id: microservice-consumer-movie-ribbon-with-hystrix1     # user-info-uri: http://localhost:9999/uaa/user      #prefer-token-info: false

2.4、實體類User.java

package com.jacky.cloud.entity; import java.math.BigDecimal; public class User {  private Long id;   private String username;   private String name;   private Short age;   private BigDecimal balance;   public Long getId() {    return this.id;  }   public void setId(Long id) {    this.id = id;  }   public String getUsername() {    return this.username;  }   public void setUsername(String username) {    this.username = username;  }   public String getName() {    return this.name;  }   public void setName(String name) {    this.name = name;  }   public Short getAge() {    return this.age;  }   public void setAge(Short age) {    this.age = age;  }   public BigDecimal getBalance() {    return this.balance;  }   public void setBalance(BigDecimal balance) {    this.balance = balance;  } }

2.5、控制層MovieController.java

package com.jacky.cloud.controller; import com.netflix.hystrix.contrib.javanica.annotation.HystrixProperty;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RestController;import org.springframework.web.client.RestTemplate; import com.jacky.cloud.entity.User;import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand; @RestControllerpublic class MovieController {  @Autowired  private RestTemplate restTemplate;   @GetMapping("/movie/{id}")  @HystrixCommand(groupKey="UserGroup1", commandKey = "findUserByIdCommand1",commandProperties = {          @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "1000"),          @HystrixProperty(name = "execution.timeout.enabled", value = "false")},fallbackMethod = "findByIdFallback")  public User findById(@PathVariable Long id) {    return this.restTemplate.getForObject("http://microservice-provider-user/simple/" + id, User.class);  }   /**   * fallback方法   * @param id   * @return     */  public User findByIdFallback(Long id) {    User user = new User();    user.setId(5L);    return user;  }}

完整項目的源碼來源 支援人員2147775633

 

springCloud Spring Boot mybatis分布式微服務雲架構-docker-hystrix-dashboard-turbine(九)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.