二、搭建springCloudAlibaba2021.1版本分布式微服务-Nacos搭建及服务注册和配置中心

发布于:2025-07-28 ⋅ 阅读:(18) ⋅ 点赞:(0)

nacos介绍

1、Nacos简介

Nacos 是阿里巴巴推出来的一个新开源项目,这是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

Nacos注册中心分为server与client,server采用Java编写,为client提供注册发现服务与配置服务。而client可以用多语言实现,client与微服务嵌套在一起,nacos提供sdk和openApi,如果没有sdk也可以根据openApi手动写服务注册与发现和配置拉取的逻辑

2、Nacos优势

常见的注册中心:

Eureka(原生,2.0遇到性能瓶颈,停止维护)
Zookeeper(支持,专业的独立产品。例如:dubbo)
Consul(原生,GO语言开发)
Nacos
相对于 Spring Cloud Eureka 来说,Nacos 更强大。

Nacos = Spring Cloud Eureka + Spring Cloud Config

Nacos 可以与 Spring, Spring Boot, Spring Cloud 集成,并能代替 Spring Cloud Eureka, Spring Cloud Config。

通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-config 实现配置的动态变更。

通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-discovery 实现服务的注册与发现。

Nacos安装(注册中心-服务端,使用SaaS,软件即服务)

为了方便,这里直接使用 docker 安装

docker run -d --name nacos -p 8848:8848  nacos/nacos-server:2.0.0
搭建nacos服务

在父项目上右击 > new > 新建 Module…

项目起名为 spring-cloud-alibaba-2021-user

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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>spring-cloud-alibaba-2021</artifactId>
        <groupId>org.example</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>spring-cloud-alibaba-2021-user</artifactId>


    <dependencies>
        <!-- springweb 启动依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- nacos 服务注册发现(客户端)依赖 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

        <!-- nacos-config 配置中心依赖 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <!--spring-cloud-dependencies 2020.0.0 版本不在默认加载bootstrap.yml 文件,如果需要加载bootstrap 文件需要手动添加依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>
    </dependencies>
</project>

application.yml 内容如下

server:
  port: 8089
spring:
  # 后面的bean会覆盖前面相同名称的bean
  main:
    allow-bean-definition-overriding: true

bootstrap.yml 内容如下,bootstrap.yml 文件比 application.yml 先加载,主要用于存放一些不会改变的配置,application.yml 存放一些经常需要改动的配置;

spring:
  application:
    name: user-demo
  profiles:
    active: yexindong_active
  cloud:
    nacos:
      discovery:
        server-addr: chn520.cn:8848 # 服务注册中心地址
        namespace: public # 注册到nacos的名称空间,默认为public
      config:
        prefix: yexindong_nacos_prefix
        file-extension: yaml  # 指定yaml格式的配置, 必须要放到bootstrao.yml 才会生效,放到application下不会生效
        server-addr: chn520.cn:8848 #配置中心地址
        group: DEFAULT_GROUP

父项目的 pom.xml 文件加入modules

   <modules>
        <module>spring-cloud-alibaba-2021-user</module>
    </modules>

新建启动类 UserApp.java

package com.alibaba.cloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

@SpringBootApplication
@EnableDiscoveryClient
public class UserApp {
    public static void main(String[] args) {
        SpringApplication.run(UserApp.class, args);
    }
}

新建controller层 UserController.java

package com.alibaba.cloud.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RefreshScope // 不重启即可刷新 nacos配置
@RequestMapping("/user")
public class UserController {



    @Value("${cache:default}")
    private String cache;

    /**
     * 获取注册中心的配置
     * @return
     */
    @RequestMapping("/getConfig")
    public String getConfig(){
        return "config:" + cache;
    }
}

此时 项目结构如下

配置nacos

网页上打开nacos,进入 配置管理 > 配置列表 ,点击右边的 +

此时会打开新建配置的页面,

  • DataId 输入:yexindong_nacos_prefix-yexindong_active.yaml
  • 配置格式 选择: YAML
  • 配置内容 中输入:cache: 123456
  • 点击 右下角的 发布 按钮

发布成功后,就可以在列表中看到刚刚发布的配置

注册

启动 UserApp.java 中的main方法,然后在nacos的 服务管理 > 服务列表 中查看,发现服务已经注册上去了

配置功能

然后访问 地址: http://localhost:8089/getConfig ,获取配置成功

修改配置

接下来在nacos中修改配置,将 cache改为 789

然后再次访问 http://localhost:8089/getConfig,配置已经更新了


网站公告

今日签到

点亮在社区的每一天
去签到