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这个服务饥饿加载
相关推荐
迪康Defender13 分钟前
终端安全事后追溯能力解析:本地审计模块设计思路与落地实践
运维·开发语言·人工智能·安全·php·安全威胁分析·运维开发
geats人山人海25 分钟前
linux 2 基本操作与vim
linux·运维·vim
xixiaoyunya33 分钟前
集中保护多台电脑:搭建内网备份服务器的完整实操方案
运维·服务器·电脑
JEECG低代码平台1 小时前
不买服务器也能异地组网:开源 P2WLAN 把两地电脑“插“进同一台路由器
运维·服务器·开源·开源软件
wdfk_prog1 小时前
LWIP教程 00:从网线上的电信号到 lwIP——PHY、MAC、DMA 与 `netif` 的完整边界
运维·网络·笔记·学习·ip
cehuishi95271 小时前
测绘外业调查如何正确的开展
运维·服务器·网络
zmsup1 小时前
从运维需求到产品能力:OpsArk Agent 的运维智能平台架构设计思路
运维·系统架构·agent·智能体·运维智能平台
江屿风2 小时前
【Linux系统】【从菜鸟驿站到操作系统:一节课打通Linux重定向与缓冲区真相】流食般投喂
linux·运维·服务器·开发语言·笔记
今天要早睡_2 小时前
Linux 基础指令速查:从 ls 到 tar 的常用命令全解析
linux·运维·chrome
吴声子夜歌2 小时前
Docker入门与实战——核心概念与安装配置
运维·docker·容器