Ribbon框架自带的负载策略类
配置类修改负载均衡策略
第一步:新建一个不会被@ComponentScan组件扫描到的包,如:com.ribbon
第二步:在该包下新建自己的负载均衡算法的规则类
package ribbon;
import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.RandomRule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class RandonRuleConfig {
//方法名一定要为iRule
@Bean
public IRule iRule(){
return new RandomRule();
}
}
第三步:主启动类上添加注解:@RibbonClient
package per;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.netflix.ribbon.RibbonClient;
import org.springframework.cloud.netflix.ribbon.RibbonClients;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;
import ribbon.RandonRuleConfig;
@SpringBootApplication
@RibbonClients(value = {@RibbonClient(name = "stock-service",configuration = RandonRuleConfig.class)}) //配置负载均衡策略
public class OrderApplication {
public static void main(String[] args) {
SpringApplication.run(OrderApplication.class,args);
}
@Bean
@LoadBalanced // 负载均衡器注解,nacos的服务调用依赖于负载均衡(nacos无法将服务名称转化为服务地址,需要使用负载均衡器,默认使用轮询的方式)
public RestTemplate restTemplate(RestTemplateBuilder builder){
RestTemplate RestTemplate = builder.build();
return RestTemplate;
}
}
配置文件修改负载均衡策略
stock-service: #在服务消费者配置服务提供者的服务名
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
stock-service:应用名称
NFLoadBalancerRuleClassName后必须写全路径,上面代码修改策略为随机com.netflix.loadbalancer.RandomRule