Ribbon负载均衡

负载均衡

服务器端的负载均衡:nginx接收客户端发来的请求,根据负载均衡策略,反向代理到另一台服务器上,nginx是安装在服务器端的,它的负载均衡策略,一般不由发送请求的客户端这一方控制

服务访问列表  在nginx服务器上的,由nginx反向代理+负载均衡去转发

客户端的负载均衡:提前把服务提供方的服务地址(一般有多个)拉取过来,然后根据客户端自己的请求情况做负载均衡,可以由发送请求的这一方自己控制。例子:如nacos中默认使用的Ribbon,nacos中的需要发送请求的一方(也叫客户端)就会设置定时任务,拉取服务访问列表到本地

服务访问列表 在 客户端本地,由客户端 发送定时任务到nacos服务中心 去维护 这张表



负载均衡算法



如何使用ribbon

这里面的每一个类都是一种负载均衡的策略

修改默认负载均衡策略有两种方式

注意:这些操作都是在服务消费方修改的,在客户端修改,因为Ribbon是客户端方的负载均衡策略

方法1. 自定义一个配置类

定义一个配置类,再定义一个Bean(方法名一定叫iRule,返回值也一般为IRule,多态的特性)返回上面的某个实现类,就修改成了这个类指定的负载均衡算法

再在启动类上加上注解@RibbonClients指定对那个服务名称生效,这样我们可以针对不同的服务提供方,使用不同负载均衡策略

注意:配置类一定不能放在启动类上的注解@CompentScan能扫描得到的地方

方法2:配置文件中设置

只需写上 负载均衡 实现的全类名 



自定义负载均衡策略

定义一个类,重写AbstractLoadBalancerRule接口中的choose方法即可

方法里前两步,获得了某个服务的所有可用实例,然后 定义一个策略,返回其中一个服务即可

下图中的是随机策略

然后通过配置文件的方式 去使用 即可



Ribbon默认懒加载

Ribbon默认懒加载,意味着只有在发起调用的时候才会创建客户端。如果网络情况不好,第一次调用会超时。



相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-09 21:48:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-09 21:48:01       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-09 21:48:01       58 阅读
  4. Python语言-面向对象

    2024-07-09 21:48:01       69 阅读

热门阅读

  1. go内存返还系统相关代码

    2024-07-09 21:48:01       21 阅读
  2. 如何使用 Puppeteer 避免机器人检测?

    2024-07-09 21:48:01       24 阅读
  3. 面试经典 150 题

    2024-07-09 21:48:01       23 阅读
  4. MySQL8之mysql-community-common的作用

    2024-07-09 21:48:01       27 阅读
  5. 机器学习综述

    2024-07-09 21:48:01       23 阅读
  6. Qt | Qt常用类列举和说明

    2024-07-09 21:48:01       24 阅读
  7. chatgpt工作原理

    2024-07-09 21:48:01       26 阅读
  8. 在make类构建系统配置文件中定义函数宏

    2024-07-09 21:48:01       23 阅读
  9. lvs集群

    lvs集群

    2024-07-09 21:48:01      22 阅读
  10. 记录Linux安装go环境的一个坑

    2024-07-09 21:48:01       23 阅读