前言
上一节我们学习了在SpringCloud微服务中如何通过代码的方式自定义ribbon的均衡负载策略,本小节我们将学习一下如何通过配置的方式实现自定义ribbon的均衡负载策略。
案例
-
Eureka Server端编写:((参考前例))
-
Eureka Client端服务提消费编写(多实例) 在多个端口启动多个实例 (参考前例)
开启3个实例(8081、8083、8084)
-
Eureka Client端服务提供方编写(参考前例)
-
项目结构
-
CoreCode
@SpringBootApplication @EnableDiscoveryClient public class MicroserviceDealBrokerRibbonCustomizedApplication { @Bean @LoadBalanced /** * 添加 @LoadBalanced 使该RestTemplate具备Ribbon均衡负载算法功能 * @return */ public RestTemplate restTemplate() { return new RestTemplate(); } public static void main(String[] args) { SpringApplication.run(MicroserviceDealBrokerRibbonCustomizedApplication.class, args); } }
server: port: 8082 spring: application: name: microservice-deal-broker-cloud-ribbon-customized-properties eureka: client: serviceUrl: defaultZone: http://localhost:8080/eureka/ instance: prefer-ip-address: true microservice-deal-cloud: ribbon: NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
-
-
持续访问:http://localhost:8082/deal/2
Ribbon会使用随机策略随机定位到不同的实例:
小结
-
通过配置的方式实现自定义ribbon均衡负载策略需要在服务消费者方的配置文件中做如下定义:
microservice-deal-cloud: ribbon: NFLoadBalancerRuleClassName:com.netflix.loadbalancer.RandomRule。
(本案例以RandomRule作为ribbon的均衡负载策略,实际上ribbon还为我们提供更为丰富的均衡负载策略)。 -
对于通过配置的方式实现自定义ribbon均衡负载策略的案例中,对以声明的服务节点ribbon将案例自定义的负载均衡策略去命中节点,例如我们对microservice-deal-cloud节点声明的是RandomRule策略,其他节点若未做声明那么将使用ribbon默认的负载均衡策略即轮询策略。
-
本小节使用到的案例:microservice-deal-eureka、microservice-deal-cloud(8081、8083、8084)、microservice-deal-broker-cloud-ribbon-customized-properties。