gpt4 book ai didi

Ribbon负载均衡策略

转载 作者:知者 更新时间:2024-03-13 02:42:12 28 4
gpt4 key购买 nike

本文素材来自

Ribbon简介

Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现。通过Spring Cloud的封装,可以让我们轻松地将面向服务的REST模版请求自动转换成客户端负载均衡的服务调用。

Ribbon原理

1、服务消费者发起请求
2、LoadBalancerInterceptor拦截器拦截请求
3、RibbonLoadBanlancerClient根据请求中的uri获取到服务提供者的id
4、通过DynamicServerListLoadBalancer根据id从eureka服务端拉去服务列表
5、通过Ribbon负载均衡规则选择某个服务

Ribbon负载均衡策略

Ribbon的负载均衡规则是通过IRule的接口来定义的,其每个实现类都是一种规则

内置负载均衡规则类 描述
RoundRobinRule 简单轮询服务列表来选择服务器。它是Ribbon默认的负载均衡规则。
AvailabilityFilteringRule 对以下两种服务器进行忽略
WeightedResponseTimeRule 为每一个服务器赋予一个权重值。服务器响应时间越长,这个服务器的权重就越小。这个权重值会影响服务器的选择。
ZoneAvoidanceRule 以区域可用的服务器为基础进行服务器的选择。使用Zone对服务器进行分类,而后再对Zone内的多个服务做轮询。
BestAvailableRule 忽略那些短路的服务器,并选择并发数较低的服务器。
RandomRule 随机选择一个可用的服务器。
RetryRule 重试机制的选择逻辑

修改Ribbon负载均衡策略

第一种方式

在配置类中定义IRule的实现类

@Bean
    public IRule randomRule(){
        return new RandomRule();
    }

第二种方式

在配置文件application.yml文件中配置

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

饥饿加载

Ribbon默认是采用懒加载,即第一次访问时才会去创建LoadBalanceClient,请求时间会很长。而饥饿加载则会在项目启动时创建,降低第一次访问的耗时

userservice:
  ribbon:
    eager-load:
      #开启饥饿加载
      enabled: true
      #指定对多个服务饥饿加载
      clients: 
        - userservice 
        - yyyyservice
        - xxxxservice

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com