SpringCloud不归路——Ribbon

Ribbon是NetFlix发布的负载均衡器,它有助于Http和Tcp的客户端行为。可以根据负载均衡算法(轮询、随机或自定义)自动帮助消费者请求,默认就是轮询。

使用步骤

  • 引入pom文件
  • 覆盖默认配置
  • 写注解

关于Ribbon的pom文件:

在SpringCloud的Eureka或者SpringCloud Alibaba的Nacos的pom文件导入的Jar中已经集成了Ribbon的引用,所以不需要引入新的jar。

关于Ribbon的配置文件:

基本使用不需要编写配置文件,即可使用

关于Ribbon的注解:

当使用RestTempate时

启动类使用@LoadBalanced 注解

package cn.itcast.service;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class ItcastServiceConsumerApplication {

    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }

    @Bean
    @LoadBalanced //开启负载均衡
    public DiscoveryClient discoveryClient(){
        return new DiscoveryClient();
    }
    public static void main(String[] args) {
        SpringApplication.run(ItcastServiceConsumerApplication.class, args);
    }

}

调用的时候通过服务名进行调用即可

 负载均衡策略自定义实现

实现该接口

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//

package com.netflix.loadbalancer;

public interface IRule {
    Server choose(Object var1);

    void setLoadBalancer(ILoadBalancer var1);

    ILoadBalancer getLoadBalancer();
}

 自定义负载均衡算法

 配置位置:消费者yml文件中

语义解析:对于service-provider服务采用的ribbon负载均衡算法是RandomRule

原文地址:https://www.cnblogs.com/sheng-se/p/14063102.html