您的位置:首页 > 编程语言 > Java开发

springcloud实战之8 断路器-仪表盘-单例监控(Hystrix)

2017-12-19 15:51 1406 查看
Spring Cloud不但跟Hystrix能够做到优雅的整合,还能够整合他的仪表盘组件Hystrix Dashboard,它主要用来实时监控Hystrix的各项指标信息。通过Hystrix Dashboard反馈的实时信息,可以帮助我们快速发现系统中存在的问题,从而及时的采取应对措施。

在Spring Cloud中构建Hystrix Dashboard非常简单。

创建工程(springcloud-hystirx-dashboard)

添加依赖

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath />
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${version.springcloud}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</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-hystrix-dashboard</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>


创建配置文件

spring:
application:
name: springcloud-hystrix-dashboard
server:
port: 8005

eureka:
client:
service-url:
defaultZone: http://peer1:8080/eureka/ instance:
lease-renewal-interval-in-seconds: 45 # 用于定义服务续约任务的调用间隔时间,默认30秒
lease-expiration-duration-in-seconds: 90  # 用于定义服务失效的时间 ,默认90秒


创建入口文件

@SpringBootApplication
@EnableDiscoveryClient
@EnableHystrixDashboard
@EnableCircuitBreaker // 开启断路器功能
public class SpringCloudHystrixDashboardApplication {

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


编写config文件

@Configuration
public class BeanConfig {

@Bean
@LoadBalanced  // 开启服务端负载均衡
RestTemplate restTemplate(){
return new RestTemplate();
}
}


编写service接口

@Service("restfulSerivce")
public class RestfulServiceImpl {

@Autowired private RestTemplate restTemplate ;

/**
* 定义服务降级逻辑(serviceFallback)
* 并且自动的实现了线程调用得依赖隔离-实现线程池的隔离,
* 为每一个依赖服务创建一个独立的线程池,这样就算某一个依赖服务出现延迟过高
* 的情况,也只是对该依赖服务的调用产生影响,而不会拖慢其他的服务。
*
* Hystrix会将请求结果放入缓存,默认缓存key既是请求参数
*/
@HystrixCommand(fallbackMethod = "serviceFallback")
public String getRestData(){
return restTemplate.getForObject("http://springcloud-producer-rest/api/rest/info",String.class) ;
}

public String serviceFallback() {
return "hi,sorry,error!";
}
}


编写web层接口

@RestController
@RequestMapping("/api/rest")
public class RestfulController {

@Autowired private RestfulServiceImpl restfulService ;

@Value("${server.port}")
String port ;
@Value("${spring.application.name}")
String name ;

@RequestMapping("/home")
public String home(){
return "I am info from port("+port+") from application name("+name+") invoke other service." + "\n"
+restfulService.getRestData();
}
}


启动工程

1.启动Eureka Server集群项目

2.启动springcloud-hystirx-dashboard项目

服务注册效果图





注意:要想看到第二张图的效果,必须先访问一次接口,才能对接口访问情况进行监控

源码

springcloud-hystirx-dashboard

历史文章

springcloud实战之技术选型:dubbo还是springcloud

springboot实战之服务消费者(ribbon)

springcloud实战之服务消费者(Feign)

springcloud实战之服务注册与发现(eureka实现)

springcloud实战之高可用服务注册中心(eureka集群)

springcloud实战之断路器(Hystrix)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息