Rebbon
什么是rebbon?
是一款基于HTTP和TCP的一款客户端负载均衡工具,基于Netflix Ribbon实现的.
负载均衡方案
- 集中式负载均衡比如Ngix 反省代理,负载均衡,服务器端对外部的访问请求进行负载均衡
- 进程内负载均衡 比如ribbon,将内部的服务调用进行负载均衡
负载均衡的策略
- 轮询策略 RoundRobinRule 按顺序进行服务访问(默认)
- 权重轮询策略 WeightedResponseTimeRule 根据每个provider的服务响应时间,响应越快,权重越高,被选中的可能性更高
- 随机策略 RandomRule 随机选取服务进行访问
- 最少并发策略 RetryRule BestAvailableRule 优先选取并发量小的服务进行访问
- 可用性敏感词策略 AvailabilityFilteringRule 过滤高并发和一直连接失败的服务提供者
- 区域敏感性策略 ZoneAvoidanceRule 考察一个区域内的服务可用性,对不可用的区域进行丢弃,从剩下的狳中选择可用的provider
用法
全局: 在启动类注入对应的负载均衡策略类 如下
@Bean
public RandomRule randomRule() {
return new RandomRule();
}
**局部 **在配置文件中添加对应服务提供者的策在均衡策略
# 负载均衡策略
# service-provider 为调用的服务的名称
service-provider:
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
Ribbon 点对点直连
点对点直连即跳过注册中心,直接连接服务提供者获取服务,一般在测试阶段使用,然后项目上线再注册到注册中心
操作方法
consumer 注释 eureka依赖和配置文件 (仅注释配置文件无效,因为约定大于配置)
引入rebbon依赖,配置文件关闭eureka,添加直连的服务地址
# 负载均衡策略
# service-provider 为调用的服务的名称
service-provider:
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
# 点对点直连模式,指定具体的 Provider 服务列表,多个用逗号隔开
listOfServers: http://localhost:7070,http://localhost:7071
# 关闭 Eureka 实现 Ribbon 点对点直连
ribbon:
eureka:
enabled: false # false:关闭,true:开启