Nacos入门到精通

简介: 本文详细介绍了Nacos的基本概念、安装过程、配置管理功能,并通过具体代码示例展示了如何使用Java SDK和Spring Boot拉取和监听Nacos中的配置信息。

Nacos概述

    全称Dynamic Naming and Configuration Service,是一个Nacos,全称Dynamic Naming and Configuration Service,是一个易于构建云原生应用的动态服务发现、配置管理和服务管理平台。其核心功能主要包括服务发现、健康检查、动态配置服务和动态DNS服务等。这些特性使得微服务的发现、管理、共享和组合更加容易。

   具体来说,Nacos支持基于DNS和RPC的服务发现,可以实时检查服务的健康状态,实现动态配置服务,并提供了动态DNS服务等特性。此外,Nacos还与Spring Cloud Alibaba紧密集成,可以作为注册中心,实现服务的注册与发现。

官网Releases · alibaba/nacos (github.com)

第一步:安装Nacos

这里,我就用Windows版本。

解压缩即可。

当然nacos也是用java写的,我们也可以直接运行这个jar包

是不是特别像springboot的配置文件。

第二步:启动nacos

startup.cmd -m standalone

当然,我这个是改了端口号的,我改回去即可。

正常运行(没改的情况下)的是8848端口号。

启动成功。访问Nacos http://localhost:8848/nacos/#/login

默认用户名和密码都是nacos

第三步:配置管理

新建配置

然后发布即可

JavaSdk拉取配置

第一步:新建项目

pom文件

 <dependencies>
        <dependency>
            <groupId>com.alibaba.nacos</groupId>
            <artifactId>nacos-client</artifactId>
            <version>2.2.1</version>
        </dependency>
        <dependency>
            <groupId>com.google.sitebricks</groupId>
            <artifactId>slf4j</artifactId>
            <version>0.8.3</version>
        </dependency>
    </dependencies>

第二步:编写代码

package org.cyl;

import com.alibaba.nacos.api.NacosFactory;
import com.alibaba.nacos.api.config.ConfigService;
import com.alibaba.nacos.api.exception.NacosException;

import java.util.Properties;

public class Main {
    public static void main(String[] args) {
        try {
            String serverAddr="localhost:8848";
            String dataId="test";
            String group="DEFAULT_GROUP";
            Properties properties=new Properties();
            properties.put("serverAddr",serverAddr);
            ConfigService configService = NacosFactory.createConfigService(properties);
            String config = configService.getConfig(dataId, group, 5000);
            System.out.println(config);
        } catch (NacosException e) {
            throw new RuntimeException(e);
        }
    }
}

第三步:运行结果

JavaSdk监听配置

第一步:编写代码

package org.cyl;

import com.alibaba.nacos.api.NacosFactory;
import com.alibaba.nacos.api.config.ConfigService;
import com.alibaba.nacos.api.config.listener.Listener;
import com.alibaba.nacos.api.exception.NacosException;

import java.io.IOException;
import java.util.Properties;
import java.util.concurrent.Executor;

public class Main {
    public static void main(String[] args) {
        try {
            String serverAddr="localhost:8848";
            String dataId="test";
            String group="DEFAULT_GROUP";
            Properties properties=new Properties();
            properties.put("serverAddr",serverAddr);
            ConfigService configService = NacosFactory.createConfigService(properties);
            String config = configService.getConfig(dataId, group, 5000);
            System.out.println(config);


            configService.addListener(dataId, group, new Listener() {
                @Override
                public Executor getExecutor() {
                    return null;
                }

                @Override
                public void receiveConfigInfo(String s) {
                    System.out.println(s);
                }
            });
            System.in.read();
        } catch (NacosException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}

第二步:运行项目并修改nacos配置文件

之后看结果,已经监测到了:

Spring拉取配置

第一步:创建项目

pom文件

<?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>org.cyl</groupId>
    <artifactId>test07</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

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

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <version>2.6.13</version>
        </dependency>
        <dependency>
            <groupId>com.google.sitebricks</groupId>
            <artifactId>slf4j</artifactId>
            <version>0.8.3</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba.nacos</groupId>
            <artifactId>nacos-spring-context</artifactId>
            <version>1.1.1</version>
        </dependency>
    </dependencies>

</project>

MyApplication类

package org.cyl;

import com.alibaba.nacos.api.annotation.NacosProperties;
import com.alibaba.nacos.spring.context.annotation.config.EnableNacosConfig;
import com.alibaba.nacos.spring.context.annotation.config.NacosPropertySource;
import org.cyl.service.MyService;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@ComponentScan
@Configuration
@EnableNacosConfig(globalProperties = @NacosProperties(serverAddr = "127.0.0.1:8848"))
@NacosPropertySource(dataId = "test",autoRefreshed = true)
public class MyApplication {


    public static void main(String[] args) {
        AnnotationConfigApplicationContext annotationConfigApplicationContext=new AnnotationConfigApplicationContext(MyApplication.class);
        MyService myService = annotationConfigApplicationContext.getBean(MyService.class);
        myService.test();
    }
}

MyService类

package org.cyl.service;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class MyService {
    @Value("${password}")
    public String username;
    public void test(){
        System.out.println(username);
    }
}

第二步:查看运行结果

Springboot拉取配置

pom文件

<?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>org.cyl</groupId>
    <artifactId>test07</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <version>2.6.13</version>
        </dependency>
        <dependency>
            <groupId>com.google.sitebricks</groupId>
            <artifactId>slf4j</artifactId>
            <version>0.8.3</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>nacos-config-spring-boot-starter</artifactId>
            <version>0.2.12</version>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.15.3</version>
        </dependency>
    </dependencies>

</project>

MyApplication类

package org.cyl;
import com.alibaba.nacos.spring.context.annotation.config.NacosPropertySource;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;


@SpringBootApplication
@NacosPropertySource(dataId = "test",autoRefreshed = true)
public class MyApplication {


    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class,args);
    }
}

application.properties

nacos.config.server-addr=127.0.0.1:8848

注意:如果想要全部写在properties里面应该这样写:

nacos.config.server-addr=127.0.0.1:8848
nacos.config.data-id=test
nacos.config.auto-refresh=true
nacos.config.bootstrap.enable=true

Controller

package org.cyl.controller;

import com.alibaba.nacos.api.config.annotation.NacosValue;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {
    @NacosValue(value = "${password}",autoRefreshed = true)
    public String password;

    @GetMapping("/")
    public String test(){
        return password;
    }
}

第二步:运行结果,查看

SpringCloud拉取项目

注意:有的版本是会直接读取bootstrap.properties里面

算了,我还是直接写一个微服务系列吧

目录
相关文章
|
4月前
|
存储 负载均衡 关系型数据库
|
5月前
|
Java Nacos 数据格式
Nacos 入门实战
Nacos 入门实战
46 0
|
5月前
|
运维 负载均衡 算法
Nacos必知必会:这些知识点你一定要掌握!
Nacos必知必会:这些知识点你一定要掌握!
1089 0
|
负载均衡 Java 应用服务中间件
搭建nacos
搭建nacos
282 0
搭建nacos
|
负载均衡 网络协议 Java
Nacos极简教程
Nacos是服务发现与注册,服务配置中心。 Nacos 具有如下特性: 服务发现和服务健康监测:支持基于DNS和基于RPC的服务发现,支持对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求; 动态配置服务:动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置; 动态 DNS 服务:动态 DNS 服务支持权重路由,让您更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单DNS解析服务; 服务及其元数据管理:支持从微服务平台建设的视角管理数据中心的所有服务及元数据。 Nacos 为 C/S 架构,服务端 NacosServ
510 0
|
Java Nacos 数据安全/隐私保护
都2023了,为什么选择Nacos,这篇文章让你入门Nacos
2023了,为什么选择Nacos,这篇文章让你入门Nacos.Nacos算是阿里的巅峰之作了 , 集万千优点与一身, 比Eureka更便捷,更优秀,更完美而且Nacos的社区非常的活跃因为它使用简单,易操作,易上手而且比Eureka有着更加优秀的控制台界面.下面来简单认识一下今天的主角Nacos吧
214 0
|
Java Nacos Maven
在项目中使用nacos
在项目中使用nacos
435 0
|
Cloud Native Nacos
Nacos简介
前四个字母分别为Naming和Configuration的前两个字母,最后的s为Service。
Nacos简介
|
负载均衡 网络协议 Java
【Nacos】这篇Nacos详解,我觉得可以看看
在2014年的时候,一位叫Martin Fowler(**马丁·福勒** )的大神,提出了微服务的概念,定义:微服务是由单一应用程序构成的小小服务,拥有独立的进程和轻量化处理,服务依据业务功能设计,用全自动的方式进行部署,能够和其他服务使用HTTP API 进行通信,同时服务会使用最小的规模进行集中管理,服务可以用不同的编程语言与数据库等组件实现。
607 1
【Nacos】这篇Nacos详解,我觉得可以看看
|
存储 SpringCloudAlibaba druid
SpringCloud Alibaba核心组件Nacos【认识和安装Nacos&快速入门】第1章
该篇文章主要介绍了:什么是nacos,nacos下载安装一些操作的步骤以及过程中的问题,最后服务消费方和提供方快速入门nacos
SpringCloud Alibaba核心组件Nacos【认识和安装Nacos&快速入门】第1章