Skip to content

注册中心

概述

目前Pangea框架使用的是nacos注册中心,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

配置方法

  1. 添加依赖:

    xml
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        <version>${version}</version> #
    </dependency>

    注意

    Nacos版本 2.1.x.RELEASE 对应的是 Spring Boot 2.1.x 版本
    Nacos版本 2.0.x.RELEASE 对应的是 Spring Boot 2.0.x 版本
    Nacos版本 1.5.x.RELEASE 对应的是 Spring Boot 1.5.x 版本
    更多版本对应关系参考:版本说明 Wiki

  2. 在bootstrap.yml添加如下配置:

    yml
    spring:
      application:
        name: pangea-auth #指定注册到注册中心的名称
      cloud:
        nacos:
          server-addr: http://${NACOS_ADDR:127.0.0.1:8848} #指定nacos地址,这里设置成动态变量形式,和云平台配合使用
          discovery:
            server-addr: ${spring.cloud.nacos.server-addr}
          config:
            server-addr: ${spring.cloud.nacos.server-addr}
            file-extension: yaml
  3. 配置成功后启动应用,会看到如下: 页面设计器

    "pangea-auth"该服务已成功启动,spring.application.name处配置的服务名称。

  4. 常见问题汇总:

     1.设置了注册地址,但是总是去localhost:8848的默认配置去注册,报错如下: 
    

    页面设计器

    解决:首先去确认下是不是真的配置的注册中心地址,格式是否正确;然后确认下是不是生效的配置是不是重复配置;如果以上都没问题基本上可以确定是nacos的bug导致,并不影响应用启动,忽略即可。

     2.设置了注册地址,总是循环打印一下日志,打印内容不确定,但总是循环打印:  
    

    页面设计器

    解决:出现这个问题的原因是启用了nacos的配置中心,并且namespace用的是默认的public,找到了public下的配置文件,就会重复打印读到的内容,也是nacos的一个版本bug,换成别的namaspace可以解决该问题。

     3. 新迁移项目采用nacos注册中心,但是加了配置后不生效  
     解决:一定确认下依赖中加的依赖是不是都加上了,很简单,但是容易忽略
    
    yml
            <!-- SpringCloud Ailibaba Nacos -->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            </dependency>
    
            <!-- SpringCloud Ailibaba Nacos Config -->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            </dependency>
     4. 应用正常启动,注册没有问题,但是在注册中心没有找到应用  
     注意下注册的`namespace`名称是不是已经在注册中心建立,如果没有的话,建立后可以看到注册过来的应用。