美文网首页
Spring Cloud 负载均衡 Ribbon

Spring Cloud 负载均衡 Ribbon

作者: Tinyspot | 来源:发表于2023-01-03 22:50 被阅读0次

1. 负载均衡策略

  • 接口 com.netflix.loadbalancer.IRule
策略类 名称 描述
RandomRule 随机策略 随机选择
RoundRobinRule 轮询策略 按顺序循环选择
RetryRule 重试策略 若选择不成功,则重试
BestAvailableRule 最低并发策略 选择并发连接最低的 server
AvailabilityFilteringRule 可用过滤策略
ResponseTimeWeightedRule 响应时间加权策略 根据 server 的响应时间分配权重
ZoneAvoidanceRule 区域权衡策略

1.1 全局策略设置

@Configuration
public class MyRule {
    @Bean
    public IRule ribbonRule() {
        return new RandomRule();
    }
}

启动类配置
@RibbonClient 表示访问 concrete-eureka-client 服务时使用的策略是 MyRule 配置的

@SpringBootApplication
@EnableEurekaClient
@RibbonClient(name = "concrete-eureka-client", configuration = MyRule.class)
public class ConcreteRibbonApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConcreteRibbonApplication.class, args);
    }
}

1.2 基于配置文件的策略设置

# 配置 ribbon 规则
concrete-eureka-client: # 被调用服务名称
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

2. 超时重试

# 全局超时配置
ribbon:
  ConnectTimeout: 5000
  ReadTimeout: 5000
  MaxAutoRetries: 1 # 对第一次请求的服务的重试次数
  MaxAutoRetriesNextServer: 2 # 要重试的下一个服务的重试次数
  OkToRetryOnAllOperations: true #对所有操作请求都进行重试,默认false

如果是配置下实例下只作用于当前实例

concrete-eureka-client: # 被调用服务名称
  ribbon:
    ConnectTimeout: 5000
    ReadTimeout: 5000
    MaxAutoRetries: 1
    MaxAutoRetriesNextServer: 2

2. 核心工作原理

核心接口 描述 默认实现类
IClientConfig 管理配置接口 DefaultClientConfigImpl
IRule 负载均衡策略接口 ZoneAvoidanceRule
IPing 定期 ping 服务检查可用性接口 DummyPing
ServerList<Server> 获取服务列表方法 ConfigurationBaseServerList
serverListFilter<Server> ZonePreferenceServerListFilter
ILoadBalancer 负载均衡选择服务 ZoneAwareLoadBalancer
ServerListUpdater PollingServerListUpdate

相关文章

网友评论

      本文标题:Spring Cloud 负载均衡 Ribbon

      本文链接:https://www.haomeiwen.com/subject/yyfrcdtx.html