Ribbon、Feign和Eureka实现负载均衡

现有两个SpringBoot应用,应用 A和应用B:

应用A通过Feign远程调用应用B,但如果应用B单个应用无法支撑应用A的大量请求,则可如下实现应用B的多实例。

1.应用B多个实例都注册到同一个Eureka,且所有实例的配置文件中的:spring.application.name都相同:

spring.application.name: appb

2. 所有的应用B启动类都增加EnableDiscoveryClient注解,服务在启动的过程中会想Eureka中注册该服务:

@EnableDiscoveryClient
@SpringBootApplication
public class ApplicationB{

    public static void main(String[] args) {
        SpringApplication.run(ApplicationB.class, args);
    }

}

3. 应用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应用的实例。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章