Ribbon负载均衡服务调用

一、Ribbon介绍

Ribbon是Netflix公司推出的HTTP和TCP的客户端负载均衡工具

ribbon特点:

  • 简化远程调用代码
  • 内置很多负载均衡算法

1.1 服务端负载均衡

负载均衡算法在服务端,服务端维护服务列表

在这里插入图片描述

1.2 客户端负载均衡

  • 负载均衡算法在客户端

  • 客户端维护服务列表

在这里插入图片描述

二、如何使用Ribbon

1.新版的eureka依赖以及集成了Ribbon依赖,所以可以不引用

  <!--Ribbon的依赖-->
  <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
 </dependency>

在这里插入图片描述

2.声明restTemplate时使用@LoadBalanced

3.restTemplate请求远程服务时,ip端口替换为服务名

String url="http://EUREKA-PROVIDER/goods/findById/"+id;
Goods goods = restTemplate.getForObject(url, Goods.class);

4.测试

启动2个provider

controller中添加如下代码:

goods.setTitle(goods.getTitle()+"|端口号:"+port);

在这里插入图片描述
在这里插入图片描述

多次刷新,发现:ribbon客户端,默认使用轮询算法,经行负载均衡调用。

三、ribbon 负载均衡策略

在这里插入图片描述

四、设置ribbon 负载均衡策略

4.1 代码

consumer工程

1.MyRule 返回想要的规则即可

package com.liming.consumer.config;

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 MyRule {
    @Bean
    public IRule rule(){
        return new RandomRule();
    }
}

2.启动类

@RibbonClient(name ="EUREKA-PROVIDER",configuration = MyRule.class)

总结:

  • 1.irule的具体实现类,看到他带的几个策略的写法。

  • 2.仿照策略的写法,自己写策略。

  • 3.调用不同的其他微服务时,可以采用不同的策略。

4.2 配置

consumer工程

application.yml

EUREKA-PROVIDER: #远程服务名
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #策略

作用:方便运维修改,重启。随时切换策略

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小钟不想敲代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值