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微信公众号安全模式消息解密,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • Spring Bean的Scope作用域详解

    Spring Bean的Scope作用域详解

    本文介绍了Spring框架中的BeanScope(作用域),包括Singleton(单例)和Prototype(原型)两种常见作用域的定义、生命周期和适用场景
    2025-01-01
  • SpringBoot中打war包需要注意事项

    SpringBoot中打war包需要注意事项

    这篇文章主要介绍了SpringBoot中打war包需要注意事项,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Java实现的简单字符串反转操作示例

    Java实现的简单字符串反转操作示例

    这篇文章主要介绍了Java实现的简单字符串反转操作,结合实例形式分别描述了java遍历逆序输出以及使用StringBuffer类的reverse()方法两种字符串反转操作技巧,需要的朋友可以参考下
    2018-08-08
  • Java解析word,获取文档中图片位置的方法

    Java解析word,获取文档中图片位置的方法

    下面小编就为大家分享一篇Java解析word,获取文档中图片位置的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • java发送飞书消息卡片具体实现方法

    java发送飞书消息卡片具体实现方法

    这篇文章主要介绍了java发送飞书消息卡片具体实现方法的相关资料,Java通过飞书消息卡片API,可以高效解决传统消息推送方式的痛点,实现业务系统事件与飞书消息卡片之间的全流程闭环,需要的朋友可以参考下
    2026-03-03
  • Springboot配置端口号全过程

    Springboot配置端口号全过程

    Springboot项目可以通过application.yml、application.properties或代码指定端口号,2.x版本以上EmbeddedServletContainerCustomizer已被替代,CMD启动可指定端口号,配置加载顺序依次为yml、properties、命令行
    2026-05-05
  • Spring中AOP的切点、通知、切点表达式及知识要点整理

    Spring中AOP的切点、通知、切点表达式及知识要点整理

    这篇文章主要介绍了Spring中AOP的切点、通知、切点表达式及知识要点整理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • MyBatis自定义SQL拦截器示例详解

    MyBatis自定义SQL拦截器示例详解

    Mybatis支持对Executor、StatementHandler、PameterHandler和ResultSetHandler 接口进行拦截,也就是说会对这4种对象进行代理,下面这篇文章主要给大家介绍了关于MyBatis自定义SQL拦截器的相关资料,需要的朋友可以参考下
    2021-10-10
  • java 线程池状态及状态转换

    java 线程池状态及状态转换

    这篇文章主要介绍了java 线程池状态及状态转换,Java里线程池的状态和线程的状态是完全不同的,具体有几种状态和哪些不同点,下面文章详细介绍,需要的小伙伴可以参考一下
    2022-05-05

最新评论