SpringCloud-Ribbon

本文介绍了如何使用Spring Cloud Ribbon来简化远程调用,并实现客户端负载均衡。通过在RestTemplate上添加@LoadBalanced注解,Ribbon能够自动解析服务名并进行负载均衡。默认策略为轮询,但可以通过编码或配置文件更改负载均衡策略,例如改为随机策略。此外,还展示了如何通过@RibbonClient注解指定特定服务的负载均衡策略。
摘要由CSDN通过智能技术生成

Ribbon

ribbon有两个作用:

1、简化远程调用

1.1 pom

​ 由于spring-cloud-starter-netflix-eureka-client已经集成了ribbon,所以只用导入eureka-client就可以了

1.2 在声明RestTemplate对象时添加@LoadBalanced注解

@Configuration
public class RestTemplateConfig {



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

1.3 使用RestTemplate发送Ribbon调用

@RestController
@RequestMapping("/order")
public class OrderController {

    @Autowired
    private RestTemplate restTemplate;

    @Autowired
    private DiscoveryClient discoveryClient;

    @GetMapping("/goods/{id}")
    public Goods findGoodsById(@PathVariable("id") int id){
        System.out.println("findGoodsById..."+id);

        Goods goods = restTemplate.getForObject("http://eureka-provider/goods/findOne/" + id, Goods.class);	//由于restTemplate前加了@LoadBalanced注解,它具备解析服务名的功能


        return goods;
    }
}

2、实现客户端的负载均衡

        Goods goods = restTemplate.getForObject("http://eureka-provider/goods/findOne/" + id, Goods.class);	//由于restTemplate前加了@LoadBalanced注解,它具备解析服务名的功能

在使用ribbon发起远程调用时,默认就支持负载均衡(策略:轮询)。

2.1 更改默认的负载均衡策略

2.1.1 通过编码更改

1、使用配置类声明一个负载均衡的bean

在配置为中声明一个bean

   @Bean
    public IRule rule(){
        return new RandomRule();
    }

2、在启动类上指定哪个提供者使用该策略

@EnableDiscoveryClient // 激活DiscoveryClient
@EnableEurekaClient
@SpringBootApplication
@RibbonClient(name="eureka-provider",configuration = 配置类.class)  //如果不指定name,则所有的远程调用都采用相同的策略
public class ConsumerApp {


    public static void main(String[] args) {
        SpringApplication.run(ConsumerApp.class,args);
    }
}

2.1.2 通过配置文件进行更改

1、对指定微服务设置负载均衡的策略

微服务名称:
  ribbon:
     NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule  #负载均衡的类

2、对所有微服务设置相同的负载均衡微略

ribbon:
  NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule  #负载均衡的类
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值