java微服務的異常

加油酱發表於2024-11-06

1.依賴異常

須知:
【 如果專案的結構是單個模組的,需要給每個單個模組新增起步依賴 spring-boot-starter-parent,指定版本 】
【 如果專案的結構是子父模組的,只需要給父模組新增起步依賴 spring-boot-starter-parent,指定版本,所有子模組引入父模組就行 】

配置檔案

  1. 你指定了該專案的啟動埠號是 8080
  2. 你使用了阿里的 nacos 註冊中心元件,定義了服務名 weather-service ,及其 Nacos註冊中心的地址及埠號 localhost:8848
  3. 定義了叢集 cluster-name :SH
  4. 定義了隔離空間 namespace:bf 6106 fa-ed 78-4 a 43-bf 22-779594 e 16 a 4 c

依賴檔案

  1. 這裡你可以看出該專案的結構是單個模組, 所以得加起步依賴 spring-boot-starter-parent,指定版本
  2. 這裡使用了 nacos 註冊中心,得加 spring-cloud 依賴和 spring-cloud-alibaba 依賴 , spring-cloud-alibaba 是根據 spring-cloud 開發的,所以使用 spring-cloud-alibaba 的所有元件都必須新增 spring-cloud 依賴,還得加 spring-cloud-starter-alibaba-nacos-discovery nacos 的註冊中心依賴
  3. 而底下使用了 <dependencyManagement> <dependencies> 標籤 spring-cloud-alibaba-dependencies ,spring-cloud-dependencie 統一了其元件下所有的依賴版本
server:  
  port: 8080  
  
spring:  
  
  #註冊服務到Nacos  
  application:  
    name: weather-service #服務名  
  
  cloud:  
    nacos:  
      discovery:  
        server-addr: localhost:8848 #Nacos註冊中心的地址及埠號  
        cluster-name: SH  
        namespace: bf6106fa-ed78-4a43-bf22-779594e16a4c     
<?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>cn.itcast</groupId>  
    <artifactId>xiaohua-service</artifactId>  
    <version>1.0-SNAPSHOT</version>  
    <packaging>jar</packaging>  
    <!--  
    war: 傳統web專案  
    jar(預設):java專案   spring boot專案統一打包方式jar  
    pom:父工程-->  
  
  
    <!--jdk編譯版本-->  
    <properties>  
        <java.version>1.8</java.version>  
    </properties>  
    <!--spring boot父工程-->  
    <parent>  
        <groupId>org.springframework.boot</groupId>  
        <artifactId>spring-boot-starter-parent</artifactId>  
        <version>2.3.4.RELEASE</version>  
        <relativePath/> <!-- lookup parent from repository -->  
    </parent>  
  
  
    <dependencies>  
  
<!--        匯入nacos註冊中心元件-->  
        <dependency>  
            <groupId>com.alibaba.cloud</groupId>  
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>  
        </dependency>  
  
  
        <!--spring boot整合junit起步依賴-->  
        <dependency>  
            <groupId>org.springframework.boot</groupId>  
            <artifactId>spring-boot-starter-test</artifactId>  
            <scope>test</scope>  
            <exclusions>                <exclusion>  
                    <groupId>org.junit.vintage</groupId>  
                    <artifactId>junit-vintage-engine</artifactId>  
                </exclusion>  
            </exclusions>  
        </dependency>  
        <!--spring boot整合springmvc起步依賴-->  
        <dependency>  
            <groupId>org.springframework.boot</groupId>  
            <artifactId>spring-boot-starter-web</artifactId>  
        </dependency>  
        <!--spring boot整合mp起步依賴-->  
        <dependency>  
            <groupId>com.baomidou</groupId>  
            <artifactId>mybatis-plus-boot-starter</artifactId>  
            <version>3.4.2</version>  
        </dependency>  
        <!--lombok依賴-->  
        <dependency>  
            <groupId>org.projectlombok</groupId>  
            <artifactId>lombok</artifactId>  
        </dependency>  
        <!--fastjson的依賴-->  
        <dependency>  
            <groupId>com.alibaba</groupId>  
            <artifactId>fastjson</artifactId>  
            <version>1.2.76</version>  
        </dependency>  
        <!--apache工具包,提供大量工具類,簡化操作,eg:判斷字串是否為""字串...  
            StringUtils.isEmpty()            StringUtils.isBlank()        -->        <dependency>  
            <groupId>commons-lang</groupId>  
            <artifactId>commons-lang</artifactId>  
            <version>2.6</version>  
        </dependency>  
        <!--mysql驅動-->  
        <dependency>  
            <groupId>mysql</groupId>  
            <artifactId>mysql-connector-java</artifactId>  
            <scope>runtime</scope>  
        </dependency>  
        <!--durid連線池依賴-->  
        <dependency>  
            <groupId>com.alibaba</groupId>  
            <artifactId>druid-spring-boot-starter</artifactId>  
            <version>1.1.23</version>  
        </dependency>  
  
        <dependency>            <groupId>com.alibaba.cloud</groupId>  
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>  
        </dependency>  
  
  
    </dependencies>  
  
    <dependencyManagement>        <dependencies>  
            <dependency>  
                <groupId>org.springframework.cloud</groupId>  
                <artifactId>spring-cloud-dependencies</artifactId>  
                <version>Greenwich.RELEASE</version>  
                <type>pom</type>  
                <scope>import</scope>  
            </dependency>  
            <dependency>                <groupId>com.alibaba.cloud</groupId>  
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>  
                <version>2.1.0.RELEASE</version>  
                <type>pom</type>  
                <scope>import</scope>  
            </dependency>  
        </dependencies>  
  
    </dependencyManagement>  
  
    <build>        <plugins>  
            <!--spring boot專案打jar包外掛  
                只有引入該外掛,打成jar包才可以使用java -jar 執行  
            -->  
            <plugin>  
                <groupId>org.springframework.boot</groupId>  
                <artifactId>spring-boot-maven-plugin</artifactId>  
                <version>2.4.5</version>  
            </plugin>  
        </plugins>  
    </build>  
</project>

2. Nacos 程式沒啟動

問題

當 Nacos 程式沒啟動時/ Nacos 沒有指定單體啟動時(Nacos 預設叢集啟動) ,會導致 Nacos 服務啟動失敗

2024-11-02 00:08:41.354 ERROR 37164 --- [           main] c.a.c.n.registry.NacosServiceRegistry    : nacos registry, weather-service register failed...NacosRegistration{nacosDiscoveryProperties=NacosDiscoveryProperties{serverAddr='localhost:8848', endpoint='', namespace='', watchDelay=30000, logName='', service='weather-service', weight=1.0, clusterName='DEFAULT', namingLoadCacheAtStart='false', metadata={preserved.register.source=SPRING_CLOUD}, registerEnabled=true, ip='192.168.240.94', networkInterface='', port=8080, secure=false, accessKey='', secretKey=''}},

java.lang.IllegalStateException: failed to req API:/nacos/v1/ns/instance after all servers([localhost:8848]) tried: failed to req API:localhost:8848/nacos/v1/ns/instance. code:500 msg: java.net.ConnectException: Connection refused: connect

解決方案

  1. 查詢 nacos 是否啟動
  1. 啟動 Nacos 服務,指定其單體執行

3. Linux 的靜態 ip 失效

查詢 ip addr ,靜態ip 沒分配

嘗試重啟網路,無效果

解決方案如下

相關文章