美文网首页
Hystrix:服务熔断-服务降级-Dashboard流监控

Hystrix:服务熔断-服务降级-Dashboard流监控

作者: 弹钢琴的崽崽 | 来源:发表于2020-02-28 11:25 被阅读0次

1. 服务熔断

1.1. 创建一个新模块

复制服务的提供者dept-8001

1.1.1 导入相同的依赖

<!--        我们需要拿到实体类,从api项目的pojo拿-->
<dependency>
    <groupId>com.common</groupId>
    <artifactId>springcloud-api</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>
<!--        junit-->
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
</dependency>
<!--        mysql依赖-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
<!--        druid数据源依赖-->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
</dependency>
<!--        日志核心依赖-->
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
</dependency>
<!--        springboot启动依赖-->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>
<!--        spirngboot测试依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-test</artifactId>
</dependency>
<!--        springboot的web依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--        jetty依赖相当于tomcat(springboot自带tomcat)-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
<!--        热部署依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
</dependency>

<!--        eureka依赖-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka</artifactId>
    <version>1.4.6.RELEASE</version>
</dependency>
<!--        actutor完善监控信息(erekua的status指向网页的信息依赖)-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

1.1.2 相同的MVC三层架构

1.1.3. 修改主启动类的类名

1.2. 导入Hystrix依赖

<!--        Hystrix依赖-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-hystrix</artifactId>
    <version>1.4.6.RELEASE</version>
</dependency>

1.3. application.yml修改

1.4. DeptController修改

1.5. 启动类上添加注解

启动对熔断的支持@EnableCircuitBreaker

1.6. 测试

抛异常的情况下,直接走熔断

a. 修改之前自定义的负载均衡算法

改为轮询

1.7.没配熔断机制的情况

使用dept-8001模块测试,修改Controller中部分代码

访问不存在的id会抛出异常

1.8. 去掉localhost

1.8.1 在application.yml中添加配置

1.8.2 变为IP地址

2. 服务降级

2.1 在API模块中编写降级操作

2.2 通过Feign指定

2.3 consumer-dept-feign的配置

在application.yml中开启降级

2.4 访问测试

正常可以访问

a. 这时候把dept-8001服务提供者关闭

b. 在配置了降级后不会报错

3. 总结比较

服务熔断:服务数某个服务超时或者异常,引起熔,保险

服务降级:客户浆从整体网站请求负载考虑,当某个服务熔断或者关闭之后,服务将不再被调那。
此时在客户端,我们可以准备一个FallbackFactory,返回一个默认的值(缺省值),整体的服务水平下降一但是,好歹能用~比直接挂掉强

4. Dashboard流监控

4.1 新建模块

4.2 把consumer-dept-80的依赖拿过来

<!--    实体类依赖,从api中导-->
<dependency>
    <groupId>com.common</groupId>
    <artifactId>springcloud-api</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>
<!--        spirngboot的web依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--        热部署依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
</dependency>
<!--        Eureka依赖-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!--        Ribbon的依赖-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-ribbon</artifactId>
    <version>1.4.6.RELEASE</version>
</dependency>

4.3 导入自己需要的依赖

<!--        hystrix依赖-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-hystrix</artifactId>
    <version>1.4.6.RELEASE</version>
</dependency>
<!--        hystrix监控页面依赖-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-hystrix-dashboard</artifactId>
    <version>1.4.6.RELEASE</version>
</dependency>

4.4 编写配置文件

4.5 编写启动类

4.6 确定服务端要有监控信息的依赖

4.7 访问成功

a. 在provider-dept-8001中导入Hystrix依赖

<!--        hystrix依赖-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-hystrix</artifactId>
    <version>1.4.6.RELEASE</version>
</dependency>

b. 增加一个Servlet

//增加一个servlet,将8001服务注册到dashboard流监控
@Bean
public ServletRegistrationBean a() {
    ServletRegistrationBean registrationBean = new ServletRegistrationBean(new HystrixMetricsStreamServlet());
    registrationBean.addUrlMappings("/actuator/hystrix.stream");
    return registrationBean;
}

4.8 监控页面

监控http://localhost:8001/actuator/hystrix.stream

a. 每次请求,监控页面都会发生变化

b. 一圈

实心圆:公有两种含义,他通过颜色的变化代表了实例的健康程度

它的健康程度从绿色<黄色<橙色<红色 递减

该实心圆除了颜色的变化之外,它的大小也会根据实例的请求流量发生变化,流量越大,该实心圆就越大,所以通过该实心圆的展示,就可以在大量的实例中快速发现故障实例和高压力实例

c. 一线

曲线:用来记录2分钟内流量的相对变化,可以通过它来观察到流量的上升和下降趋势!

d. 整图说明

相关文章

网友评论

      本文标题:Hystrix:服务熔断-服务降级-Dashboard流监控

      本文链接:https://www.haomeiwen.com/subject/baqvqhtx.html