Ribbon、Feign和Eureka实现负载均衡
现有两个SpringBoot应用,应用 A和应用B:
应用A通过Feign远程调用应用B,但如果应用B单个应用无法支撑应用A的大量请求,则可如下实现应用B的多实例。
1.应用B多个实例都注册到同一个Eureka,且所有实例的配置文件中的:spring.application.name都相同:
spring.application.name: appb
所有的应用B启动类都增加EnableDiscoveryClient注解,服务在启动的过程中会想Eureka中注册该服务:
@EnableDiscoveryClient
@SpringBootApplication
public class ApplicationB{public static void main(String[] args) {
SpringApplication.run(ApplicationB.class, args);
}
}
应用A启用EnableDiscoveryClient和EnableFeignClient注解,且应用A开启负载均衡能力:
@EnableDiscoveryClient //用于启动服务发现功能,将应用A注册到Eureka
@EnableFeignClients //用于启动Fegin功能,以支持服务A远程访问应用B
@SpringBootApplication
public class ApplicationA {public static void main(String[] args) {
SpringApplication.run(ApplicationA.class);
}
@Bean //定义REST客户端,RestTemplate实例
@LoadBalanced //开启负债均衡的能力
RestTemplate restTemplate() {
return new RestTemplate();
}
}
4.访问服务A,Ribbon会根据自己的算法,轮流调用Eureka中不同的ApplicationB应用的实例。
还没有评论,来说两句吧...