Ribbon负载均衡

Ribbon与Eureka的关系

Eureka的服务拉取与负载均衡都是由Ribbon来实现的。

当服务发送http://userservice/user/xxx[htt://userservice/user/xxx](http://userservice/user/xxx "htt://userservice/user/xxx")请求时,是无法到达userservice服务的,会通过Ribbon会把这个请求拦截下来,通过Eureka-server转换为真实的ip与端口。

如果服务名对应多个服务,Eureka-server会把所有的ip与端口返回给Ribbon,Ribbon来做负载均衡。

@LoadBalanced注解表示以后的请求由Ribbon拦截和处理。

负载均衡策略

Ribbon的负载均衡策略规则是一个叫做IRule的接口来定义的,每一个子接口都是一种规则。

下面是IRule接口的继承关系图:

调整负载均衡的方案

Ribbon的默认负载均衡策略是轮询(Round Robin)调度。

方法一,定义一个新的IRule:

这种方法,以后不管调用哪个微服务都是指定这个方案的。

java 复制代码
@Bean
public IRule randomRule() {
    return new RandomRule();
}

方法二,在yml中配置:

只有userservice这个服务时,才会使用RandomRule的方案。

java 复制代码
userservice:
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

注意:方法一的优先级比方法二高!

解饿加载

Ribbon模式是采用懒加载,既第一次访问时才会去创建LoadBalanceClient,请求时间会很长。

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

这里的服务名称是自己要调用的服务名称,不是自己的服务名称。

java 复制代码
ribbon:
  eager-load:
    enabled: true           #开启饥饿加载
    clients: userservice    #指定对userservice这个服务饥饿加载
相关推荐
智能运维指南1 小时前
代码管理软件如何融入 DevOps 工具链?全链路联通的 5 个关键点
运维·devops·信创适配·嘉为蓝鲸
充电zcx1 小时前
Linux:4:开发工具详解
linux·运维·服务器
gongfeng30005 小时前
福州企业级AI自动化获客解决方案品牌梳理与适用场景分析
运维·人工智能·自动化·g-claw ai员工
光电笑映7 小时前
网络通信基础:从协议分层到 Socket 编程预备
linux·运维·服务器·网络
微小冷8 小时前
用Mermaid画时序图
运维·流程图·时序图·mermaid·生命线
其实防守也摸鱼8 小时前
Codex 下载与本地部署实战:从安装到运行全指南
android·大数据·运维·安全·自动化
wdfk_prog8 小时前
ROS教程07:从 ros::start() 顺着源码读懂 Master、XML-RPC 与 Topic 注册发现
运维·缓存·docker·容器·ros
吴声子夜歌8 小时前
Shell编程实例——与解析相关的任务(二)
linux·运维·shell
倔强的石头1069 小时前
【Linux指南】动静态库系列(八):ELF 加载与进程地址空间:程序还没运行,为什么已经有地址
linux·运维
两点王爷9 小时前
常用的 Docker 镜像拉取地址仓库及常用命令详解
运维·服务器·容器