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这个服务饥饿加载
相关推荐
Dachui_112229 分钟前
ZeroNews LFS 使用教程:NAS 文件发布为公网 HTTPS 文件空间,不传网盘、按人授权、免登录分享
运维·网络安全·文件共享·团队协作·nas
智能运维指南39 分钟前
2026年企业自动化运维平台选型:四类架构的差异与决策逻辑
运维·人工智能·嘉为蓝鲸
szephyr1 小时前
Nginx 反向代理实战:从 502、跨域到 HTTPS,一次打通
运维·nginx·https·部署·反向代理
一技安身1 小时前
【信创】docker-26.0.2.tgz 原理 + 完整安装
linux·运维·服务器
Dachui_11222 小时前
内网穿透 Webhook 告警实战:客户端离线、应用探测、资源删除全覆盖
运维·远程工作·内网穿透·devops·webhook·服务器监控·应用探测
数据智研2 小时前
【数据分享】300个城市-5G试点城市DID数据(2014-2025)
大数据·运维·人工智能·信息可视化·数据分析
honsor2 小时前
工业级网口温湿度变送器 ModbusTCP 机房动环环境监测终端
运维·网络·人工智能·物联网·安全·云计算·智能温湿度监测系统
fengkai45452 小时前
八、Docker详解1-3
运维·docker·容器
流浪0013 小时前
Linux系统篇34——信号(六):信号处理期间又来了怎么办?——sigaction、sa_mask、可重入函数与 volatile
linux·运维·面试·操作系统·信号处理·信号
学烹饪的小胡桃3 小时前
资产设备管理系统 WGFIX 怎么设置https访问
linux·运维·服务器·网络·安全