Spring Cloud Alibaba 配置中心Nacos

406 阅读2分钟

一、前言

微服务是将应用拆分多个服务,服务多了,配置文件管理起来就很麻烦,此时就需要配置管理中心来统一管理各个服务应用的配置文件。

二、添加依赖

pom.xml中添加spring-cloud-starter-alibaba-nacos-config依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

因为用到了bootstrap.properties 需要添加spring-cloud-starter-bootstrap依赖,否则bootstrap配置不生效

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

完整的pom.xml如下

<?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">
    <parent>
        <groupId>com.llh</groupId>
        <artifactId>parent</artifactId>
        <version>1.0.0</version>
        <relativePath/>
    </parent>

    <modelVersion>4.0.0</modelVersion>
    <artifactId>consumer</artifactId>
    <version>1.0.0</version>
    <name>consumer</name>
    <description>consumer description</description>
    <packaging>jar</packaging>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

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

三、bootstrap.properties

删除application.properties,创建bootstrap.properties,内容如下:

# 应用名称
spring.application.name=consumer
# nacos配置中心
spring.cloud.nacos.config.server-addr=http://localhost:8848
spring.cloud.nacos.config.file-extension=properties
spring.cloud.nacos.config.group=DEFAULT_GROUP
spring.cloud.nacos.config.namespace=83e9d384-d49e-4f40-84bf-c25612883dcc
spring.cloud.nacos.config.username=nacos
spring.cloud.nacos.config.password=nacos
# nacos配置中心 公共配置文件
spring.cloud.nacos.config.shared-configs[0].data-id=common.properties
spring.cloud.nacos.config.shared-configs[0].refresh=true
spring.cloud.nacos.config.shared-configs[0].group=DEFAULT_GROUP
  • 注意:spring.cloud.nacos.config.namespace 与 nacos中的 namespace一致。
  • 这里配置了common.properties为公共配置文件,如所有服务的注册中心都是一样,没必要每个服务都配置一遍。

四、Nacos创建配置文件

创建两个配置文件consumer.propertiescommon.properties

QQ截图20210519194027.png

consumer.propertiesconsumer的配置文件,就是简单的配置了启动端口。注意consumer.properties的前缀和bootstrap.propertiesspring.application.name一致。

consumer.properties 内容如下

# 端口
server.port=8888

common.properties 是公共配置文件,里面写了跟注册中心相关的配置信息。
内容如下

# 注册中心相关
spring.cloud.nacos.discovery.server-addr=http://localhost:8848
spring.cloud.nacos.discovery.namespace=83e9d384-d49e-4f40-84bf-c25612883dcc
spring.cloud.nacos.discovery.username=nacos
spring.cloud.nacos.discovery.password=nacos

启动项目后可以看到端口是8888,并且服务注册到nacos注册中心上,但是项目中bootstrap.properties并没有配置端口和服务注册相关信息,由此可见端口配置信息和注册配置信息是从配置中心中动态读取的

五、结语

源码地址:github.com/tigerleeli/…

nacos生产环境使用需要配置持久化,它默认是存文件的,这样很不安全,一般是用Mysql持久化。并且生产环境可能需要做Nacos集群,这些可以看一下官网。

同步微信公众号:小虎哥的技术博客

wx_qrcode_1.jpg