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

本文介绍如何在SpringCloud中使用Hystrix Dashboard进行服务监控。通过整合Hystrix Dashboard,可以实时监控Hystrix各项指标,帮助快速定位问题并采取措施。

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值