ribbon的负载均衡策略种类,如何配置ribbon的负载均衡策略

1.什么是Ribbon?

ribbon是负载均衡的一种实现组件,和我们常见的nginx是同样的功能,不同的是nginx是服务端的负载均衡,而ribbon是客户端的负载均衡.

服务端负载均衡:在消费者和服务提供者之间使用独立的代理方式进行负载均衡,如硬件的F5,软件的nginx

客户端负载均衡:是客户端根据自己情况完成的负载均衡;

说白了,服务端的负载均衡是请求发出后,由服务提供者决定具体走哪一个服务;而客户端负载均衡是由客户端决定要请求哪个服务.

2.ribbon的负载均衡策略

  • RandomRule:随机策略
  • RoundRobinRule:轮询策略
  • RetryRule:重试策略,在轮询的基础上进行重试;即先使用轮询来访问,如果选到的实例正常响应就返回,如果选择的服务为null或已经失效,则在失效时间deadline之前不断以轮询的方式进行重试,如果超时了,就返回null.
  • WeightedResponseTimeRule:权重策略,ribbon默认的权重策略是根据服务响应时间来的,如果响应时间越短,则权重越大;如果要结合nacos使用,手动设置权重的话,需要指定是NacosRule
  • BestAvailableRule:过滤失效的服务实例,然后找出请求量最小的服务来使用
  • ZoneAvoidanceRule:默认规则,复合判断server所在区域(云原生概念,即服务器所在的位置,北京或成都,一般是就近原则)的性能和server的可用性选择服务器,会根据判断条件对服务进行过程,过滤完成后,走线性轮询的机制

3.如何使用负载均衡

修改默认的负载均衡策略

第一种: 配置类

package com.lipengg.config;

import com.alibaba.cloud.nacos.ribbon.NacosRule;
import com.netflix.loadbalancer.IRule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author lipengg
 * @date 2023/5/21
 */
@Configuration
public class RibbonConfig {


    /**
     * 全局配置,指定负载均衡策略
     * @return
     */
    @Bean
    public IRule iRule(){
        return new NacosRule();
    }
}

然后在启动类使用注解指定需要使用的当前负载均衡策略的服务

package com.lipengg;

@SpringBootApplication
// @RibbonClient(name = "stock-service",configuration = RibbonConfig.class)
// 配置多个
@RibbonClients(value = {
        @RibbonClient(name = "stock-service",configuration = RibbonConfig.class),
        @RibbonClient(name = "stock-account",configuration = RibbonConfig.class)
})
public class OrderApplication {

    public static void main(String[] args) throws InterruptedException {
        SpringApplication.run(OrderApplication.class, args);
       
    }
}

******上述值得注意的是,我们的RibbonConfig类要放在@ComponentScan扫描不到的地方,如果放在了能扫描到的地方,那就是全局配置,无需用@RibbonClients指定某一服务的负载均衡策略,因为当前工程,全部的负载均衡策略都将是配置类中指定的策略

例如:我的springboot启动类在com.lipengg下面。配置类就可以在com下面,但不能在com.lipengg下面

第二种,配置文件,指定使用nacos的权重策略

stock-service: # 被调用的服务名
  ribbon:
    # # 指定使用nacos的负载均衡策略(优先使用同一集群的实例,基于随机和权重)
    NFLoadBalanceRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值