天天看点

Ribbon负载均衡SpringCloud

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:开启