3-3 SpringCloud快速开发入门: Ribbon随机负载均衡策略实现

接上一章节Ribbon 实现客户端负载均衡,这里讲讲Ribbon随机负载均衡策略实现

Ribbon 负载均衡策略

Ribbon 的负载均衡策略是由 IRule 接口定义, 该接口由如下类图展示:

3-3 SpringCloud快速开发入门: Ribbon随机负载均衡策略实现_第1张图片

策略 解释
RandomRule 随机
RoundRobinRule 轮询
AvailabilityFilteringRule 先过滤掉由于多次访问故障的服务,以及并发连接数超过阈值的服务,然后对剩下的服务按照轮询策略进行访问;
WeightedResponseTimeRule 根据平均响应时间计算所有服务的权重,响应时间越快服务权重就越大被选中的概率即越高,如果服务刚启动时统计信息不足,则使用 RoundRobinRule 策略,待统计信息足够会切换到该 WeightedResponseTimeRule 策略
RetryRule 先按照 RoundRobinRule 策略分发,如果分发到的服务不能访问,则在指定时间内进行重试,分发其他可用的服务;
BestAvailableRule 先过滤掉由于多次访问故障的服务,然后选择一个并发量最小的服务;
ZoneAvoidanceRule 综合判断服务节点所在区域的性能和服务节点的可用性,来决定选择哪个服务;

Ribbon随机负载均衡策略实现

重点:SpringCloud 从 2020.0.1 版本开始,从 Eureka 中移除了 Ribbon 组件,使用 LoadBalance 组件来代替 Ribbon 实现客户端负载均衡。LoadBalance 组件相对于 Ribbon 来说,仅支持两种负载均衡策略:【轮询策略】和【随机策略】

  • 由于我使用的是springCloud2021.0.x的版本,则使用LoadBalance 组件配置服务消费者为随机策略覆盖之前默认的轮询策略

添加依赖


        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-loadbalancerartifactId>
            <version>3.1.3version>
            <scope>compilescope>
        dependency>

添加配置类

import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.loadbalancer.core.RandomLoadBalancer;
import org.springframework.cloud.loadbalancer.core.ReactorLoadBalancer;
import org.springframework.cloud.loadbalancer.core.ServiceInstanceListSupplier;
import org.springframework.cloud.loadbalancer.support.LoadBalancerClientFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.core.env.Environment;



public class CustomLoadBalancerConfiguration {

    @Bean
    ReactorLoadBalancer<ServiceInstance> randomLoadBalancer(Environment environment,
                                                            LoadBalancerClientFactory loadBalancerClientFactory) {
        String name = environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);
        return new RandomLoadBalancer(loadBalancerClientFactory
                .getLazyProvider(name, ServiceInstanceListSupplier.class), name);
    }
}

3-3 SpringCloud快速开发入门: Ribbon随机负载均衡策略实现_第2张图片
3-3 SpringCloud快速开发入门: Ribbon随机负载均衡策略实现_第3张图片

  • 启动服务消费者进行调用测试,已经变成随机调用服务了
  • 3-3 SpringCloud快速开发入门: Ribbon随机负载均衡策略实现_第4张图片
    3-3 SpringCloud快速开发入门: Ribbon随机负载均衡策略实现_第5张图片
    在这里插入图片描述
    3-3 SpringCloud快速开发入门: Ribbon随机负载均衡策略实现_第6张图片

你可能感兴趣的:(spring,cloud,ribbon,负载均衡)