【SpringBoot】SpringBoot 之 自定义Ribbon均衡策略(七) 【SpringCloud】SpringCloud 服务提供者集群与服务发现Discovery(三)

  本章介绍Ribbon自定义规则

Ribbon自带随机均衡策略

  1、搭建项目,参考:【SpringCloud】SpringCloud 服务提供者集群与服务发现Discovery(三)

  2、新增配置类,配置类中注入IRule的实现类

    在调用者项目(test-springcloud-order8000)中,新增一个配置类com.test.myrule.MySelfRule

 1 package com.test.myrule;
 2 
 3 import com.netflix.loadbalancer.IRule;
 4 import com.netflix.loadbalancer.RandomRule;
 5 import org.springframework.context.annotation.Bean;
 6 import org.springframework.context.annotation.Configuration;
 7 
 8 @Configuration
 9 public class MySelfRule {
10 
11     @Bean
12     public IRule myRule(){
13         // 定义随机规则
14         return new RandomRule();
15     }
16 }

   注意,官方文档明确给出警告:

    这个自定义配置类不能放在@Configuration所扫描的当前包及子包下,否则我们自定义的这个配置类就会被所有Ribbon客户端共享,达不到特殊化定制的目的了

    如果想要Ribbon客户端共享,那边就放在@Configuration所扫描的地方

    

  3、使用新增的配置类对“CLOUD-PAYMENT-SERVICE”服务生效,在启动类com.test.springcloud.Application上增加注解

    @RibbonClient(name = "CLOUD-PAYMENT-SERVICE", configuration = MySelfRule.class)

    name指定针对哪个服务 进行负载均衡,而configuration指定负载均衡的算法具体实现类。

 1 package com.test.springcloud;
 2 
 3 import com.test.myrule.MySelfRule;
 4 import org.springframework.boot.SpringApplication;
 5 import org.springframework.boot.autoconfigure.SpringBootApplication;
 6 import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
 7 import org.springframework.cloud.netflix.ribbon.RibbonClient;
 8 
 9 @EnableEurekaClient
10 @SpringBootApplication
11 @RibbonClient(name = "CLOUD-PAYMENT-SERVICE", configuration = MySelfRule.class)
12 public class OrderMain80 {
13     public static void main(String[] args) {
14         SpringApplication.run(OrderMain80.class, args);
15     }
16 }

  4、启动项目,测试项目

    使用地址:http://localhost:8000/consumer/payment/get/1

    可以看到,的到的响应内容是从提供者的2个节点中,随机的到的。

自定义Ribbon均衡策略

  1、新增一个IRule的实现类

  2、修改配置类,在配置类中注入新编写的实现类

  3、使用配置类

  4、测试

猜你喜欢

转载自www.cnblogs.com/h--d/p/12687015.html
今日推荐