Ribbon实战

1、Ribbon简介
Ribbon是Netflix发布的负载均衡器,配合Eureka使用时,可自动从Eureka Server获取服务提供者地址列表,并基于负载均衡算法,请求其中一个服务提供者实例
在这里插入图片描述
2、使用Demo
1)引入Ribbon依赖

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-ribbon</artifactId>
</dependency>

注:1)与Eureka配合使用时,spring-cloud-starter-eureka中已经包含了spring-cloud-starter-ribbon
  2)添加@LoadBalanced注解

import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

@Configuration
public class MovieConfiguration {
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
public class MovieController {
    @Autowired
    private RestTemplate restTemplate;

    @GetMapping("/user/{id}")
    public User findById(@PathVariable Long id) {
        return restTemplate.getForObject("http://user/" + id, User.class);
    }
}

3、使用Java代码自定义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 RibbonConfiguration {
    @Bean
    public IRule ribbonRule() {
        // 负载均衡规则,改为随机
        return new RandomRule();
    }
}
import org.springframework.cloud.netflix.ribbon.RibbonClient;
import org.springframework.context.annotation.Configuration;

@Configuration
@RibbonClient(name = "user", configuration = RibbonConfiguration.class)
public class TestRibbonConfiguration {
}

注:1)user为服务提供者在Eureka中的名称
  2)RibbonConfiguration该类不能在应用程序上下文的@ComponentScan中,否则会在全局生效(不同的服务我们可能会需要差异化的配置)
  3)可配置项有:IClientConfig、IRule、IPing、ServerList、ServerListFilter、ILoadBalancer
4、使用配置文件自定义Ribbon配置

# 指定user服务的负载均衡策略采用随机策略
user:
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRulew

application.yml中添加上述配置,其中user为服务名(做到了服务配置隔离),配置项有:
  1)NFLoadBalancerClassName:配置ILoadBalancer的实现类
  2)NFLoadBalancerRuleClassName:配置IRule的实现类
  3)NFLoadBalancerPingClassName:配置IPing的实现类
  4)NIWSServerListClassName:配置ServerList的实现类
  5)NIWSServerListFilterClassName:配置ServerListFilter的实现类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值