spring cloud学习5——Ribbon负载均衡


前言

主要学习一下ribbon负载均衡原理、负载均衡策略、懒加载等

一、负载均衡流程

在这里插入图片描述
1、发起请求
2、拉取服务列表
3、返回服务列表
4、轮询到8081

二、负载均衡原理

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

由上图我们可以发现,order service发送的请求被ribbon拦截了,这个拦截器就是LoadBalacerInterceptor
在这里插入图片描述LoadBalacerInterceptor 实现了ClientHttoRequestInterceptor接口,这个接口可以拦截客户端发的http请求,里面有个intercept方法
在这里插入图片描述
查看LoadBalacerInterceptor里面的intercept方法
在这里插入图片描述
进入execute方法
在这里插入图片描述
再进入execute方法,通过服务名从eureka获取到服务列表
在这里插入图片描述
进入getServer方法
在这里插入图片描述
进入chooseServer方法
在这里插入图片描述
调用父类的chooseServe方法,可以看到是通过rule对象进行规则筛选
在这里插入图片描述
查看rule对象是什么类型—》IRule (I 接口的意思) 这里面是随机
在这里插入图片描述
查看IRule接口的实现类
在这里插入图片描述
随机到8081,可以使用真的ip和端口去替换服务名
在这里插入图片描述

完整流程图
在这里插入图片描述

三、负载均衡策略

Ribbon的负载均衡规则是一个叫IRule的接口来定义的,每一个字接口都是一种规则
在这里插入图片描述
在这里插入图片描述

通过定义IRule实现可以修改负载均衡规则,有两种方式
1、代码方式:在orderservice中的OrderApplication类中,定义一个新的IRule:

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

2、配置文件方式:在order service的application.yml文件中,添加新的配置也可以修改规则:

userservice:
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #负载均衡规则

四、懒加载

Ribbon默认是采用懒加载,即第一次访问时才会去创LoadBalanceClient,请求时间会很长。
第一次加载时间:308ms
在这里插入图片描述
第二次加载时间:65ms
在这里插入图片描述

而饥饿加载则会在项目启动时创建,降低第一次访问的耗时,通过下面的配置开启饥饿加载:

ribbon:
  eager-load:
    enabled: true # 开启饥饿加载
    clients: userservice # 指定对userservice这个服务饥饿加载

第一次加载时间:218ms
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值