SpringCloud学习记录——Feign客户端负载均衡及Hystrix断路器

点我点我:项目github地址

1、搭建service-feign服务调用multipl(两个节点提供),实现客户端负载均衡效果。

新建maven module,命名为micro-service-feign,父项目指向micro,打包方式选择jar,新建方式选择“maven-archetype-webapp”。

pom.xml引入SpringBoot基础包、spring-cloud-starter-eureka、javax.servlet-api、,pom.xml依赖包导入:


在src/main/java目录下新建com.xiudoua.study.micro包,在此包下新建一个FeignApplication.java类,其中@SpringBootApplication代表此项目为SpringBoot工程,@EnableDiscoveryClient标注此微服务可被注册中心发现,@EnableFeignClients为注解此微服务可以通过Feign客户端负载均衡的方式调用其他微服务,代码如图:


在src/main/java目录下新建com.xiudoua.study.micro.client包,在此包新建MultiplFeignClient接口,用于指向客户端负载均衡调用的微服务(指向微服务serviceId),代码如图:


在src/main/java目录下新建com.xiudoua.study.micro.controller包,在此包新建FeignController类,此类提供通过Fegin方式调用multipl服务的微服务,代码如图:


在src/main/resources目录下新建application.properties文件(此处可新建application.properties或者application.yml文件做配置均可),文件结构如下:

#标注服务名称
spring.application.name=feign
#标注服务端口号
server.port=8087

#配置指向Eureka注册中心的地址
eureka.client.serviceUrl.defaultZone=http://localhost:8080/eureka/

#显示注册客户端主机和端口号
spring.cloud.client.ipAddres=http://localhost/
eureka.instance.instance-id=${spring.cloud.client.ipAddress}:${spring.application.name}:${spring.application.instance_id:${server.port}}  
eureka.instance.preferIpAddress=true

分别将Eureka打包jar(eureka.jar)、将service-multipl打包为jar(multipl.jar)、将本节service-feign打包jar(feign.jar),存储到E:/jar/0404/feign文件夹下,如下图所示:


复制一份multipl.jar命名为multipl2.jar,用360压缩工具打开multipl2.jar(图6),将压缩包中BOOT-INF/classes目录下的application.properties文件拽出来放到当前目录,修改原来端口号为8084为8085(图7),将修改后的application.properties文件覆盖multipl2.jar中BOOT-INF/classes目录下的application.properties文件。


图6


图7

打开dos窗口,切换到E:/jar/0404/feigin目录,分别启动eureka.jar、multipl.jar、multipl2.jar、feign.jar,访问http://localhost:8080/eurekaUI,访问结果如下图示:


访问http://localhost:8087/multiplyTwoNum?a=23&b=21,如果页面随机返回”访问主机:http://localhost/ 端口:8084 计算结果为:483“、”访问主机:http://localhost/ 端口:8085 计算结果为:483“即代表此乘法计算服务随机由8084或8085端口的微服务提供,客户端负载均衡效果实现。

2、搭建service-feign-hystrix服务调用multipl(两个节点提供),实现客户端负载均衡及断路效果。

注:所谓断路效果,就是指如果微服务挂了不会一直等待后续请求,浪费CPU资源,并且及时返回错误消息,深入了解请点击这儿

参照步骤1的service-feign项目,新建maven module,项目名为service-feign-hystrix,pom.xml文件相较于步骤1多引入

spring-cloud-starter-hystrix,如下图:


服务启动类添加@EnableCircuitBreaker注解,标注此微服务支持断路效果。

在com.xiudoua.study.micro.client包新建HystrixClientFallback类,实现自定义MultiplFeignHystrixClient接口的multiplyTwoNum方法,并在方法返回打印“断路器效果成功”字样。代码如下图:


原有MultiplFeignClient接口改为MultiplFeignHystrixClient,代码如下:


application.properties配置如下:

#标注服务名称
spring.application.name=feign-hystrix
#标注服务端口号
server.port=8088

#配置指向Eureka注册中心的地址
eureka.client.serviceUrl.defaultZone=http://localhost:8080/eureka/

#显示注册客户端主机和端口号
spring.cloud.client.ipAddres=http://localhost/
eureka.instance.instance-id=${spring.cloud.client.ipAddress}:${spring.application.name}:${spring.application.instance_id:${server.port}}  
eureka.instance.preferIpAddress=true

打包eureka.jar、multipl.jar、feign-hystrix.jar,分别通过dos以java -jar ***.jar的方式将三个微服务启动,访问http://localhost:8088/multiplyTwoNum?a=23&b=21,如果有正常计算结果返回则代表服务均启动成功;此时关闭multipl服务,再次访问http://localhost:8087/multiplyTwoNum?a=23&b=21,如果页面返回“断路器效果成功!”,则代表微服务断路器配置成功。

猜你喜欢

转载自blog.csdn.net/u012459871/article/details/79821609