nacos配置实例权重不生效问题

 更新时间:2024年07月31日 09:24:45   作者:zou79189747  
这篇文章主要介绍了nacos配置实例权重不生效问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

踩坑记录

SpringCloudAlibaba + nacos + openfeign搭建的微服务测试环境,发现在nacos服务详情界面配置权重后,用postman调用本地服务,还是轮询调用,并没有按设置的权重来,把权重设置0又是生效的,设置为0的实例是不会被调用的。

网上查了各种资料都五花八门,很多都是简单提下配置,找了好久没一个好用的,大部分都是说要自定义负载均衡策略,不确定是不是版本问题

SpringCloud Naocs 提供的负载均衡策略

SpringCloud新版本中负载均衡器由原来的ribbon替换为Spring自己开发的Loadbalancer,默认只提供了2中负载均衡策略:RandomLoadBalancer 和 RoundRobinLoadBalancer。

SpringCloud Alibaba Nacos 2021.1版本提供了基于Nacos注册中心的轮询策略 NacosLoadBalancer 是基于权重的策略。

NacosLoadBalancer的权重策略默认是关闭的,如果要使用基于权重的负载策略要手动开启。

如果未给服务器设置权重,建议不要使用基于权重的策略,因为如果微服务的权重都相同,相当于随机

修改配置文件配置

#开启nacos的负载均衡策略
spring.cloud.loadbalancer.nacos.enabled=true

归根到底就是一个开关,但是网上答案五花八门找到一个回答到点子上的不容易,开启之后,调用服务的效果已经不是轮询了,而是按分配的权重来

POM依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
 
    <groupId>org.example</groupId>
    <artifactId>spring-cloud-alibaba-demo</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>order-service</module>
        <module>warehouse-service</module>
        <module>shop-service</module>
    </modules>
 
 
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.13</version>
        <relativePath/>
    </parent>
 
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
        <spring.cloud.alibaba.version>2021.0.5.0</spring.cloud.alibaba.version>
        <spring.cloud.version>2021.0.5</spring.cloud.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
 
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
 
 
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
    </dependencies>
 
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>2.0.25</version>
            </dependency>
 
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring.cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring.cloud.alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
 
        </dependencies>
    </dependencyManagement>
 
</project>

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java学习之反射机制及应用场景介绍

    Java学习之反射机制及应用场景介绍

    本篇文章主要介绍了Java反射机制及应用场景,反射机制是很多Java框架的基石。非常具有实用价值,需要的朋友可以参考下。
    2016-11-11
  • java easyPOI实现导出一对多数据

    java easyPOI实现导出一对多数据

    这篇文章主要为大家详细介绍了java如何利用easyPOI实现导出一对多数据,并且可以设置边框、字体和字体大小,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-12-12
  • Java实现替换集合中的元素的方法详解

    Java实现替换集合中的元素的方法详解

    这篇文章主要为大家详细介绍了Java中实现替换集合中的元素的常见方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-02-02
  • 一文彻底掌握RocketMQ 的存储模型

    一文彻底掌握RocketMQ 的存储模型

    这篇文章主要介绍了RocketMQ 的存储模型,本文的重点在于分析 BrokerServer 的消息存储模型,笔者按照自己的理解 , 尝试分析 RocketMQ 的存储模型,需要的朋友可以参考下
    2022-12-12
  • springcloud使用profile实现多环境配置方式

    springcloud使用profile实现多环境配置方式

    这篇文章主要介绍了springcloud使用profile实现多环境配置方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Java常问面试内容--数组、声明、初始化、冒泡、多维数组、稀疏数组

    Java常问面试内容--数组、声明、初始化、冒泡、多维数组、稀疏数组

    这篇文章主要介绍了Java多线程面试题(面试官常问),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-07-07
  • Java使用BigDecimal解决小数计算问题

    Java使用BigDecimal解决小数计算问题

    Java中的BigDecimal是一个内置类,用于精确表示任意大小的十进制数,它提供了一种处理浮点运算精度问题的方法,特别适合金融、货币交易等需要高精度计算的场景,本文给大家介绍了java中如何使用BigDecimal解决小数计算问题,需要的朋友可以参考下
    2024-08-08
  • SpringBoot单元测试之数据隔离详解

    SpringBoot单元测试之数据隔离详解

    我们在写单元测试时,有一个比较重要的要求是可以重复运行, 那么这样就会有一个比较麻烦的问题:数据污染,所以本文为大家整理了两个数据隔离的方式,希望对大家有所帮助
    2023-08-08
  • maven repository详解

    maven repository详解

    这篇文章主要介绍了maven repository的相关知识,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-05
  • Java中的Map接口实现类HashMap和LinkedHashMap详解

    Java中的Map接口实现类HashMap和LinkedHashMap详解

    这篇文章主要介绍了Java中的Map接口实现类HashMap和LinkedHashMap详解,我们常会看到这样的一种集合,IP地址与主机名,等,这种一一对应的关系,就叫做映射,Java提供了专门的集合类用来存放这种对象关系的对象,需要的朋友可以参考下
    2024-01-01

最新评论