Ⅱ、负载均衡之openFeign
1、OpenFeign介绍
-
OpenFeign是一个声明式web服务客户端,在消费侧,只需创建一个接口并在接口上添加注解即可
-
一个接口可能会被多个接口调用,所以通常会针对每个微服务自行防撞一些客户端类来包装这些依赖服务的调用。
-
Feign集成了Ribbon,利用Ribbon来维护server的服务列表,并通过轮询来实现客户端的负载均衡。与Ribbon不同的是,feign只需要定义服务绑定接口且以声明式的方法,优雅而简单的实现和服务的调用
3、OpenFeign入门
Euraka + OpenFeign(集成了Ribbon负载均衡功能)
-
pom
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> <version>2.2.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> <version>2.2.5.RELEASE</version> </dependency>
-
yml
server: port: 8085 spring: application: name: feign-client-order eureka: instance: instance-id: feign8085 #访问路径可以显示IP prefer-ip-address: true #Eureka客户端向服务端发送心跳的时间间隔 单位秒(默认30) # lease-renewal-interval-in-seconds: 1 #Eureka服务端在收到最后一次心跳后的等待时间上限,单位秒(默认90),超时剔除服务 # lease-expiration-duration-in-seconds: 2 client: fetch-registry: true # false表示自己就是注册中心。我的职责就是维护服务实例,并不需要去检索服务 register-with-eureka: true # false表示自己不需要向注册中心注册自己 service-url: defaultZone: http://localhost:7003/eureka/ # 设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址(单机版) #defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/ # 集群版
-
main application
@SpringBootApplication @EnableFeignClients//注入OpenFeign public class OpenfeignApplication { public static void main(String[] args) { SpringApplication.run(OpenfeignApplication.class, args); } }
-
openFeign 接口声明式配置
@Component //FeignClient值为服务提供者注册在Eureka中的服务名称 @FeignClient(value = "EUREKA-CLIENT-PROVIDER") public interface FeignService { @RequestMapping("/provider/test") //该接口方法为服务提供者的方法 public String test() ; }
-
controller 调用
@RestController public class OpenFeignController { @Autowired FeignService feignService; @RequestMapping("/feign/test") public String test() { return feignService.test(); } }
-
feign 中可用配置
- 日志查看
- 超时控制