开发者

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

目录
  • 踩坑记录
  • SpringCloud Naocs 提供的负载均衡策略
    • 修改配置文件配置
    • POM依赖
  • 总结

    踩坑记录

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

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

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

    SpringCloud Naocs 提供的负载均衡策略

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

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

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

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

    修改配置文件配置

    #开启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.candroidompiler.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>
                <artandroidifactId>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>

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜