一文带你掌握nacos基础应用

简介: nacos在springcloud体系中作为注册中心与配置中心使用。相当于eureka与apollo的功能。一个老生常谈的问题nacos和eureka区别,下图是楼主在网上查找到。


image.png

1.为什么使用选择nacos

nacos在springcloud体系中作为注册中心与配置中心使用。相当于eureka与apollo的功能。

一个老生常谈的问题nacos和eureka区别,下图是楼主在网上查找到。

image.png

但是在楼主实际应用中 还有以下有点特别称道:

  1. nacos有配置功能,相对于楼主之前的eureka+apollo 这无疑大大的简化了系统的复杂性。
  2. nacos使用了数据库进行管理数据,使在处理数据时心里更舒服了。
  3. nacos拥有namespace和gourp的概念,可以隔离同名的服务。这样在多人起后端服务时,可以注册到一个nacos服务 隔离开就可以了。

2.Nacos快速开始

这个快速开始手册是帮忙您快速在您的电脑上,下载、安装并使用 Nacos。

1.版本选择

您可以在Nacos的release notes博客中找到每个版本支持的功能的介绍,当前推荐的稳定版本为1.4.2或2.0.1。

2.预备环境准备

Nacos 依赖 Java 环境来运行。如果您是从代码开始构建并运行Nacos,还需要为此配置 Maven环境,请确保是在以下版本环境中安装使用:

  1. 64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。
  2. 64 bit JDK 1.8+;下载 & 配置
  3. Maven 3.2.x+;下载 & 配置

3.下载源码或者安装包

你可以通过源码和发行包两种方式来获取 Nacos。

1.从 Github 上下载源码方式

git clone https://github.com/alibaba/nacos.git
cd nacos/
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U  
ls -al distribution/target/
// change the $version to your actual path
cd distribution/target/nacos-server-$version/nacos/bin

2.下载编译后压缩包方式

您可以从 最新稳定版本 下载 nacos-server-$version.zip 包。

  unzip nacos-server-$version.zip 或者 tar -xvf nacos-server-$version.tar.gz
  cd nacos/bin

4.启动服务器

1.Linux/Unix/Mac

启动命令(standalone代表着单机模式运行,非集群模式):

sh startup.sh -m standalone

如果您使用的是ubuntu系统,或者运行脚本报错提示[[符号找不到,可尝试如下运行:

bash startup.sh -m standalone

2.Windows

启动命令(standalone代表着单机模式运行,非集群模式):

startup.cmd -m standalone

当idea使用源码单机启动时需要以下配置

image.png

image.png

-Dnacos.standalone=true

5.单机时使用数据库

当不添加配置时,默认是使用内存保存信息,我们可以添加数据库配置,使数据保存在数据库内.

暂时官方只支持mysql,其他数据库需要自己手动修改。

1.源码启动

使用源码idea启动需要修改以下文件的以下位置

image.png

2.已经打包的jar包

nacos\conf\application.properties修改数据库配置

image.png

6.启动成功

出现以下图案代表启动成功,看出来模式为单机模式,路径为Console输出,访问即可

image.pngimage.png

对于官网集群搭建的要求,是要求大企业的,个人认为小公司如果没有条件可以不必满足,也可以正常启动。但是有条件还是建议上集群。

3.springboot注册进入nacos

1.修改pom文件

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!-- SpringCloud Alibaba Nacos Config -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

在pom.xml文件中最好选择合理的版本,否则会报各种各样的错 。

版本可以根据官方文档选择:https://github.com/alibaba/spring-cloud-alibaba/wiki/版本说明

同时为了保证版本相同建议再父工程中加入以下配置,意思是子工程groupid为org.springframework.cloud,com.alibaba.cloud,org.springframework.boot的都依赖父工程版本

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <!--maven不支持多继承,使用import来依赖管理配置-->
                <scope>import</scope>
            </dependency>
            <!-- SpringCloud Alibaba 微服务 -->
            <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-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
</dependencyManagement>

2.修改bootstrap.xml

这里一定要使用bootstrap.yml而不是application.yml,因为bootstrap.yml运行先于后者,如果使用application.yml可能会出现即使有注册的地址,还是去连接localhost:8848的情况。

spring:
  application:
    name: systemp
    # 数据源配置
  cloud:
    nacos:
      discovery:
        # 服务注册地址
        server-addr: 192.168.xx.x:8848
        #命名空间
        namespace: b80f0aa4-3af2-a6e3-c6fda24c2bc0
        #分组
        group: xxx
      config:
        # 配置中心地址
        server-addr: 192.168.xx.xx:8848
        # 配置文件格式
        file-extension: yml
        #命名空间
        namespace: b80f0aa4-3af2-a6e3-c6fda24c2bc0
        #分组
        group: xxx

可以为服务指定namespace和group,在一个namespace和group中的服务只能获取同namespace和group中的服务,这样可以同时配置dev和pro环境。获取小组内的小伙伴都可以连接一个nacos服务,而不是像eureka  一人启动一个。

1.新建命名空间

配置文件中namespace是需要建立的,方式如图。

image.png

配置文件中是命名空间id

2.新建分组

分组不用在nacos中新建 ,直接编写即可。

3.修改启动类

在spring boot启动类上加入@EnableDiscoveryClient注解即可。

@EnableDiscoveryClient
@SpringBootApplication
public class GetwayApplication {
    public static void main(String[] args) {
        //去除nacos日志
        System.setProperty("nacos.logging.default.config.enabled", "false");
        SpringApplication.run(GetwayApplication.class, args);
    }
}

注意:如果使用了logback作为日志System.setProperty("nacos.logging.default.config.enabled", "false"); 需要添加 否则会因为日志命名报错

4.启动

然后启动服务,访问ip:8848/nacos可以验证是否注册成功。

image.png

同时也发布到了指定的namespace和groupid。

4.配置中心

配置中心:bootstrap.yml中的配置可以通过nacos配置修改,同时大部门不需要重启服务就可以生效。

由于引入了nacos,楼主不再使用apollo配置中心。变更原因如下

  1. 由于架构变更为springcloud alibaba,nacos可以承担起eureka+apollo的功能。
  2. 可以降低系统的复杂性。方便运维。
  3. 对配置中心的需求仅有动态配置,无更细腻话的权限和灰度发布等功能要求。

1.实战整合springboot

建议启动类使用bootstrap.yml

1.新建nacos配置

image.png

请注意选择合适命名空间

image.png

配置解释如下:

  1. Data ID的命名格式如下:{spring.application.name}-{spring.profiles.active}.{文件类型},也就是系统名称+dev/pro.yaml(一般情况)见下图。
    image.png
    image.png

如果没有spring.profiles.active会省略“-”与“spring.profiles.active”

  1. group:其中需要注意namespace与group需要与nacos中配置对应(这两个概念上文有介绍),否则会获取不到配置。
  2. 配置格式:这里因为使用了bootstrap.yml所以选择上述配置。
  3. 配置内容:需要在nacos中更改的配置项。

2.配置成功

如果成功:

image.png

切记namespace与group一定要匹配。

同时可以监控到那台服务使用该配置。

image.png

3.客户端接口编写

@RestController
@RefreshScope
public class DemoController {  
    @Value("${nacostest.demo}")
    private String demo;
    @GetMapping("/testConfig")
    public String testConfig()  {
        return demo;
    }
}

@RefreshScope不要少写!否则报错!

改变配置多次调用接口,可以发现返回值发生变化。


相关文章
|
2月前
|
人工智能 Serverless 测试技术
nacos常见问题之Serverless 应用引擎2.0不支持 MSE nacos如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
23 0
|
4月前
|
Java Serverless Nacos
Serverless应用引擎问题之nacos客户端报错如何解决
在进行Serverless应用开发和部署时,开发者可能会遇到不同类型的报错信息;本合集着重收录了Serverless环境中常见的报错问题及其解决策略,以助于开发者迅速诊断和解决问题,保证服务的连续性和可用性。
257 1
|
7月前
|
存储 运维 Dubbo
Nacos 注册中心的设计原理:让你的应用轻松实现高效注册与发现!
Nacos 注册中心的设计原理:让你的应用轻松实现高效注册与发现!
116 0
|
7月前
|
Java 数据库连接 Go
如何在Spring Boot应用中使用Nacos实现动态更新数据源
如何在Spring Boot应用中使用Nacos实现动态更新数据源
268 0
|
7月前
|
Java Nacos Spring
Nacos spring-cloud 版本没找到共享配置文件的说明,Nacos服务中共享,并且可以被多个应用获取和使用。这个在官网哪里有说明啊
Nacos spring-cloud 版本没找到共享配置文件的说明,Nacos服务中共享,并且可以被多个应用获取和使用。这个在官网哪里有说明啊
35 1
|
缓存 开发框架 容灾
Nacos配置中心介绍与应用,微服务开发标配组件
Nacos 动态配置服务可以让你以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。
526 0
Nacos配置中心介绍与应用,微服务开发标配组件
|
消息中间件 数据可视化 Java
Docker Compose:部署SpringBoot应用(含MySQL,Redis,Nacos,RabbitMQ,Nginx)
Docker Compose:部署SpringBoot应用(含MySQL,Redis,Nacos,RabbitMQ,Nginx)
2032 0
Docker Compose:部署SpringBoot应用(含MySQL,Redis,Nacos,RabbitMQ,Nginx)
|
6天前
|
运维 JavaScript Java
Serverless 应用引擎产品使用之Nacos 在集中发版时遇到老年代暂满,并且频繁进行 Full GC,但是 GC 后内存没有降下来如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
15 0
|
6天前
|
Cloud Native Java Nacos
Spring Cloud Nacos:概念与实战应用
【4月更文挑战第28天】Spring Cloud Nacos 是一个基于 Spring Cloud 构建的服务发现和配置管理工具,适用于微服务架构。Nacos 提供了动态服务发现、服务配置、服务元数据及流量管理等功能,帮助开发者构建云原生应用。
12 0
|
7天前
|
Dubbo Java Serverless
Serverless 应用引擎操作报错合集之Nacos中nacos启动正常,访问白页,启动日志显示正常如何解决
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
12 0
Serverless 应用引擎操作报错合集之Nacos中nacos启动正常,访问白页,启动日志显示正常如何解决