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这个服务饥饿加载
相关推荐
VIP_CQCRE12 小时前
上线 AI 分站别一次改完:一套可回滚的配置与验收流程
运维·产品设计·ai工具·技术教程·acedatacloud
Shell运维手记12 小时前
Shell 结构化命令知识点总结(case、for、while)
运维·microsoft·shell·脚本
木泽八12 小时前
《Ubuntu系统GRUB引导修复操作记录》
linux·运维·ubuntu
2601_9654542313 小时前
AI视频制作:做历史建筑视频,宫殿园林的老图难找,AI怎么自动配古建素材?
运维·人工智能·音视频
Ivanqhz14 小时前
MoE 原理、TC/EC 路由、LSH-MoE 与负载均衡浅析
运维·网络·人工智能·深度学习·算法·机器学习·负载均衡
Starry-sky(jing)14 小时前
crane 下载镜像:不连接 Docker,3 步准备并校验 ARM64 离线包
运维·docker·arm64·crane
古法老登瞎折腾14 小时前
大数据智能运维实战(八):从调度任务追到计算引擎——补齐排查链路
java·大数据·运维·spring ai·mcp
zhongben123_14 小时前
从0到1开发一款生鲜配送APP:核心技术难点与架构避坑指南
大数据·运维·人工智能·ios·架构·web app
学页官方15 小时前
部署实战】教培系统私有化部署全流程:从云服务器到上线验收
运维·服务器
时间售卖铺15 小时前
MySQL 备份
运维·数据库·mysql·云原生