SpringCloud系列(二)Ribbon 负载均衡的原理及详细流程

16 篇文章 0 订阅
16 篇文章 0 订阅

关于负载均衡这个概念在上一篇文章中有所提到,在消费者远程调用之前有一个重要的环节就是负载均衡,那么为什么要进行负载均衡呢?其原理及实现流程如何?
其实 Ribbon 负载均衡可以认为是一种策略,也可以说是某种规则,当消费者发起请求时,就会被负载均衡拦截器给拦截到,然后获取到请求中的 id,再按照某种规则选择某个服务,继而修改请求 url,再次发起请求,这时候才获取到提供者的服务;
  本篇文章主要介绍负载均衡的原理及详细的实现流程,然后简单介绍一下什么是饥饿加载,从而彻底明白实现的过程!!!

🔫 Ribbon 负载均衡原理及详细流程

☀️ 原理

  这里还是以源码的形式来看一下具体的实现流程,如下图所示:
在这里插入图片描述
总之,当消费者发起请求后,将会有一个拦截器进行拦截, 拦截到之后将将这个请求交给 RibbonLoadBalancerClient, 获取到 url 中的服务 id,如上面的 consumerservice,根据 DynamicServerListLoadBalancer 拉取到服务列表后开始进行负载均衡,基于 IRule 根据一种规则选择一条服务, 如轮循规则选中一个 8081 的服务, 将此 url 替代消费者发起的请求 url, 最后再发送到服务提供者, 请求到服务提供者的列表中的 8081 这个服务.

☀️☀️ 详细流程

在这里插入图片描述

🔫 🔫 Ribbon 负载均衡常用规则及实现方式

☀️ 常用规则

在这里插入图片描述

☀️☀️ 实现方式

  • 方式一:在消费者(consumer - service)中的启动类(Application)类中定义 IRule:
    在这里插入图片描述
  • 方式二:在消费者(consumer - service)的 application.yml 文件中添加新的配置:
    在这里插入图片描述

🔫 🔫 🔫 饥饿加载是怎么一回事

Ribbon 默认的是采用懒加载,也就是说第一次访问的时候才会去创建 LoadBalancerClient,请求的时间也会比较长,而饥饿加载可以在项目启动的时创建,从而降低第一次访问的耗时,配置如下:
 在服务消费者(consumer - service)的 application.yml 文件中配置;
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值