前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nacos+Gateway使用lb: xxxservice不起作用 ,Can not get service instances from nacos, serviceId=null

Nacos+Gateway使用lb: xxxservice不起作用 ,Can not get service instances from nacos, serviceId=null

作者头像
一写代码就开心
发布2022-05-30 11:30:20
1.1K0
发布2022-05-30 11:30:20
举报
文章被收录于专栏:java和python

目录

1 问题

在nacos和gateway整合的时候,报错

代码语言:javascript
复制
java.lang.IllegalStateException: Can not get service instances from nacos, serviceId=null

意思是服务找不到,在nacos里面找不到,可是明明已经看见了啊,已经注册进去了啊,为啥找不到, gateway里面的这个是通过服务名找项目

在这里插入图片描述
在这里插入图片描述

所以就出在这个问题上;

就是你的版本问题了,这个整合版本问题是坑,意思是你得找可以使用这个lb模式的版本才可以;

使用其他版本,可以使用http的形式,但是如果你想要使用lb这个模式,就得找对版本

目前我找到一个

2 解决

首先是父项目的依赖,直接使用我的这个,你的那些版本,可能不支持,或者有解决的方法,但是你得花时间找,直接拿上我的这个版本就可以

代码语言:javascript
复制
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <modules>
<!--        <module>order</module>-->
<!--        <module>stock</module>-->
<!--        <module>order-ribbon</module>-->
<!--        <module>order-nacos</module>-->
        <module>stock-nacos</module>
        <module>order-openfeign</module>
        <module>gateway</module>
<!--        <module>nacos-config</module>-->
<!--        <module>order-sentinel</module>-->
<!--        <module>gateway</module>-->
        <!--        <module>Sentinel-demo</module>-->
    </modules>
<!--    <parent>-->
<!--        <groupId>org.springframework.boot</groupId>-->
<!--        <artifactId>spring-boot-starter-parent</artifactId>-->
<!--        <version>2.3.2.RELEASE</version>-->
<!--        <relativePath/> &lt;!&ndash; lookup parent from repository &ndash;&gt;-->
<!--    </parent>-->
    <!--属性集合-->
    <properties>
        <java.version>1.8</java.version>
        <java.version>1.8</java.version>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>

        <spring.boot.version>2.5.5</spring.boot.version>
        <spring.cloud.version>2020.0.4</spring.cloud.version>
        <spring.cloud.bootstrap.version>3.0.4</spring.cloud.bootstrap.version>
        <spring.cloud.alibaba.version>2021.1</spring.cloud.alibaba.version>
        <stream.cloud.version>3.1.4</stream.cloud.version>

        <gateway.version>3.0.4</gateway.version>

<!--        <java.version>1.8</java.version>-->
<!--        <spring.cloud.alibaba.version>2.2.5.RELEASE</spring.cloud.alibaba.version>-->
<!--        <spring.cloud.version>Hoxton.SR8</spring.cloud.version>-->
<!--        <spring.boot.version>2.3.11.RELEASE</spring.boot.version>-->
    </properties>

    <groupId>com.jing</groupId>
    <artifactId>jing</artifactId>
    <version>0.0.1-SNAPSHOT</version>
<!--    <packaging>pom</packaging>-->
    <name>jing</name>
    <description>Demo project for Spring Boot</description>

    <dependencies>
<!--        <dependency>-->
<!--            <groupId>com.alibaba.csp</groupId>-->
<!--            <artifactId>sentinel-core</artifactId>-->
<!--            <version>1.8.0</version>-->
<!--        </dependency>-->

        <!--        springboot-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-dependencies -->
<!--        <dependency>-->
<!--            <groupId>org.springframework.cloud</groupId>-->
<!--            <artifactId>spring-cloud-dependencies</artifactId>-->
<!--            <version>Hoxton.SR3</version>-->
<!--            <type>pom</type>-->
<!--            <scope>import</scope>-->
<!--        </dependency>-->
        <!--引入注册中心阿里巴巴-->
        <!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-starter-alibaba-nacos-discovery -->
<!--        <dependency>-->
<!--            <groupId>com.alibaba.cloud</groupId>-->
<!--            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>-->
<!--            <version>2.0.2.RELEASE</version>-->
<!--        </dependency>-->

<!--        <dependency>-->
<!--            <groupId>org.springframework.cloud</groupId>-->
<!--            <artifactId>spring-cloud-dependencies</artifactId>-->
<!--            <version>${spring.cloud.version}</version>-->
<!--            <type>pom</type>-->

<!--        </dependency>-->
        <!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-starter-alibaba-nacos-config -->
<!--        <dependency>-->
<!--            <groupId>com.alibaba.cloud</groupId>-->
<!--            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>-->
<!--            <version>2.2.6.RELEASE</version>-->
<!--        </dependency>-->

<!--        <dependency>-->
<!--            <groupId>com.alibaba.cloud</groupId>-->
<!--            <artifactId>spring-cloud-alibaba-dependencies</artifactId>-->
<!--            <version>${spring.cloud.alibaba.version}</version>-->
<!--            <type>pom</type>-->

<!--        </dependency>-->
    </dependencies>

    <!--全局引入下载依赖地址,并不会引入依赖-->
    <dependencyManagement>
        <!--放在dependencyManagement里的依赖,子maven一定要显式的声明,
          没有放在dependencyManagement里的依赖,子maven直接继承父maven的没放的依赖
      -->
        <!--spring cloud alibaba的版本管理器,通过dependency方式来完成继承-->
        <dependencies>
            <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>

            <!--springboot的版本管理器-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-parent</artifactId>
                <version>${spring.boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!--Spring Cloud的版本管理-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring.cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>

    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>
                <version>1.1</version>

            </plugin>
        </plugins>
    </build>

</project>

gateway项目里面的pom文件

代码语言:javascript
复制
<?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">
    <parent>
        <artifactId>jing</artifactId>
        <groupId>com.jing</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>gateway</artifactId>

<dependencies>
    <!--gateway依赖,需要有springcloud的依赖管理器,如果没有设置的话,需要指定版本-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-gateway</artifactId>
    </dependency>

    <!--nacos服务注册与发现-->
    <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-loadbalancer</artifactId>
    </dependency>
</dependencies>
</project>

openfeign的项目里面

代码语言:javascript
复制
<?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">
<!--    订单服务-->
    <parent>
        <artifactId>jing</artifactId>
        <groupId>com.jing</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>order-openfeign</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
<!--        1 <!‐‐ openfeign 远程调用 ‐‐>-->
        <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-openfeign -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
<!--            <version>2.2.6.RELEASE</version>-->
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<!--            <version>2.2.6.RELEASE</version>-->
        </dependency>

        <!--        nacos 的服务注册与发现的依赖-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<!--            <version>2.0.2.RELEASE</version>-->
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-bootstrap -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
<!--            <version>3.0.2</version>-->
        </dependency>


        <!--        <dependency>-->
<!--            <groupId>org.springframework.cloud</groupId>-->
<!--            <artifactId>spring-cloud-starter-bootstrap</artifactId>-->
<!--        </dependency>-->

    </dependencies>
</project>

接下来是gateway的配置文件

代码语言:javascript
复制
server:
  port: 8098
spring:
#  main:
#    allow-bean-definition-overriding: true
  application:
    name: gateway

  cloud:
    nacos:
      server-addr: 127.0.0.1:8848
      discovery:
        password: nacos
        namespace: public
        username: nacos
        service: gateway


    # gateway 的配置
    gateway:
      #gateway的配置

      discovery:
        locator:
          enabled: true #是否启动自动识别nacos服务

#      路由规则
      routes:
        - id: orderroute  # 路由唯一的标识
          uri: lb://orderopenfeign
#          断言规则,用于路由规则的匹配
          predicates:
            - Path=/orderserver/**
#  过滤器
          filters:
            - StripPrefix=1  # 作用是  转发之前去掉  第一层的路径

使用以上的pom里面的版本就可以实现了,不会出现 Nacos+Gateway使用lb: xxxservice不起作用;

其他版本的,你们找到解决方法了嘛,欢迎评论,一起进步

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 1 问题
  • 2 解决
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档