史上最全 SpringCloud 入门教程,从零开始带你深入♂学习(十
server:
port: 80
#开启降级 openfeign.hystrix
feign:
hystrix:
enabled: true
加群 1025684353 一起吹水聊天-->
#EurekaClient 配置
eureka:
client:
register-with-eureka: false #不像 eureka 中注册自己
service-url:
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
[领取资料](
)
[](
)4、运行测试
1、启动 eureka 集群注册中心 springcloud-eureka-7001 和 springcloud-eureka-7002
2、启动服务提供者 springcloud-provider-dept-8001
3、启动消费者 springcloud-consumer-dept-openfeign
[
](
)
4、关闭服务提供者 springcloud-provider-dept-8001
[
](
)
[](
)服务熔断和降级的区别
=========================================================================
服务熔断—>服务端:某个服务超时或异常,引起熔断~,类似于保险丝(自我熔断)
服务降级—>客户端:从整体网站请求负载考虑,当某个服务熔断或者关闭之后,服务将不再被调用,此时在客户端,我们可以准备一个 FallBackFactory ,返回一个默认的值(缺省值)。会导致整体的服务下降,但是好歹能用,比直接挂掉强。
触发原因不太一样,服务熔断一般是某个服务(下游服务)故障引起,而服务降级一般是从整体负荷考虑;管理目标的层次不太一样,熔断其实是一个框架级的处理,每个微服务都需要(无层级之分),而降级一般需要对业务有层级之分(比如降级一般是从最外围服务开始)
实现方式不太一样,服务降级具有代码侵入性(由控制器完成/或自动降级),熔断一般称为自我熔断。
[](
)Dashboard 流监控
============================================================================
Hystrix Dashboard 的一个主要优点是它收集了关于每个 HystrixCommand 的一组度量。Hystrix 仪表板以高效的方式显示每个断路器的运行状况
[](
)1、新建消费者模块 springcloud-sonsumer-hystrix-dashboard
[领取资料](
)
[
](
)
[](
)2、添加相关依赖
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
</dependency>
<dependency>
<groupId>org.study</groupId>
<artifactId>springcloud-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.3.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<version>2.3.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
<dependency>
<groupId>org.springframew
ork.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
[](
)3、编写 application.yaml 配置文件
server:
port: 9001
hystrix:
dashboard:
proxy-stream-allow-list: localhost
[](
)4、编写主启动类,添加 dashboard 监控注解
package com.study.springcloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;
@SpringBootApplication
@EnableHystrixDashboard//开启 dashboard 监控
public class DeptConsumerDashboard_9001 {
public static void main(String[] args) {
SpringApplication.run(DeptConsumerDashboard_9001.class,args);
}
}
[](
)5、检查服务提供者是否都添加监控信息依赖
6、启动测试
7、给要被监控的服务提供者(springcloud-provider-dept-hystrix-8001 模块)下的主启动类添加 hystrix 依赖和监控
添加 hystrix 依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
添加监控
package com.study.springcloud;
import com.netflix.hystrix.contrib.metrics.eventstream.HystrixMetricsStreamServlet;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.context.annotation.Bean;
//启动类
@SpringBootApplication
@EnableEurekaClient//在服务启动后自动注册到 Eureka 中!
评论