3. Ribbon 负载均衡

51 阅读1分钟

Ribbon 负载均衡

总结 image.png

Ribbon介绍

image.png

@LoadBalanced 标签

RestTemolate发送的请求,要被Ribbon拦截和处理

service发送请求, Ribbon拦截请求, 根据请求地址中的服务名, 获取Eureka中的服务列表,根据负载均衡规则去选择具体的某个服务地址,再到controller

image.png

负载均衡规则

规则接口是IRule

默认实现的是ZoneAvoiddanceRule 根据zone选择服务器列表 然后轮询

image.png

常见规则

image.png

自定义负载均衡规则

代码方式

代码方式,影响所有模块的服务请求,配置灵活 但是修改时需要从新打包发布

@Bean 
public IRule randomRule(){ 
    //负载均衡规则设置成了随机 
    return new RandomRule();
}

发送6次 8081 接收了4次 8082接收了2次

image.png

image.png

配置文件方式

只影响 配置文件 生效的模块的服务 请求,直观方便 不用从新打包 但是无法全局配置

userservice: #服务名称 
    ribbon: 
        NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #负载均衡规则

Ribbon加载方式 image.png clients是个list 如果需要多个服务名称

image.png