Ribbon 负载均衡
总结
Ribbon介绍
@LoadBalanced 标签
RestTemolate发送的请求,要被Ribbon拦截和处理
service发送请求, Ribbon拦截请求, 根据请求地址中的服务名, 获取Eureka中的服务列表,根据负载均衡规则去选择具体的某个服务地址,再到controller
负载均衡规则
规则接口是IRule
默认实现的是ZoneAvoiddanceRule 根据zone选择服务器列表 然后轮询
常见规则
自定义负载均衡规则
代码方式
代码方式,影响所有模块的服务请求,配置灵活 但是修改时需要从新打包发布
@Bean
public IRule randomRule(){
//负载均衡规则设置成了随机
return new RandomRule();
}
发送6次 8081 接收了4次 8082接收了2次
配置文件方式
只影响 配置文件 生效的模块的服务 请求,直观方便 不用从新打包 但是无法全局配置
userservice: #服务名称
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #负载均衡规则
Ribbon加载方式
clients是个list 如果需要多个服务名称