Nacos入门

什么是nacos

NACOS是构建云计算的本地应用程序易于使用的动态服务发现,配置和服务管理平台。 详情见官网html

如何使用

Nacos 快速开始 这是官网地址,你们能够直接看文档。 若是不肯看文档的,我下面简单的介绍一下如何下载,使用。 官网是从github上下载源码,可是咱们下载比较慢,能够去码云下载linux

1.运行服务端

看了半天的nacos官网,终于发现了nacos并非跟eureka同样,有一个服务端的pom文件,能够直接依赖。而是须要去编译源码才能够。git

由于我在linux上面下载的最新的nacos源码,编译一直失败,暂时找不到缘由,因此我在windows编译了一遍,成功了。下面介绍如何在window上面运行nacos。github

//我在D:\project里面拉取代码
git clone https://gitee.com/mirrors/Nacos.git
cd nacos
// 而后在D:\project\Nacos里面打开cmd命令,进行编译
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U 
// 由于是windows平台,直接到D:\project\Nacos\distribution\target\nacos-server-1.3.0-BETA\nacos\bin目录下面执行
startup.cmd
复制代码

nacos服务端成功运行,浏览器输入http://127.0.0.1:8848/nacos,进入nacos控制台,帐号密码默认为nacos。以下图:web

NACOS-1.3.0-BETA控制台

2. 服务注册

建立一个项目nacos-example,spring Boot版本2.2.1.RELEASE,pom文件以下:spring

<?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">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>nacos-example</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>nacos-example</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <spring-boot.version>2.2.1.RELEASE</spring-boot.version>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <dependencies>
    // 这是我以前的eureka依赖,注释掉
        <!--        <dependency>-->
        <!--            <groupId>org.springframework.cloud</groupId>-->
        <!--            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>-->
        <!--        </dependency>-->

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- 客户端 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.2.1.RELEASE</version>
        </dependency>
      
      <!-- 这个待会儿介绍 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>2.2.1.RELEASE</version>
        </dependency>

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

    </dependencies>

    <dependencyManagement>
        <dependencies>
            <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>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
        </repository>
    </repositories>

</project>

复制代码

application.properties配置以下:apache

server.port=8081
spring.application.name=nacos-provider
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
management.endpoints.web.exposure.include=*
复制代码

建立一个Controller测试windows

@RestController
public class EchoController {

    @GetMapping(value = "/echo/{string}")
    public String echo(@PathVariable String string) {
        return "Hello Nacos Discovery " + string;
    }
}
复制代码

最后别忘记了在启动类上面加上注解@EnableDiscoveryClient,没错,无论是eureka仍是consul仍是如今的nacos均可以统一用这个注解,至于为何能够看我这个文章,单独来介绍。浏览器

启动项目,在nacos控制台的服务管理下面的服务列表中能够看到咱们刚才启动的服务。bash

注册服务
注册服务已经完成了,至于其余的Feign调用你们能够本身去试试,下面介绍一下nacos另外一个功能,自动刷新配置。

自动刷新配置

就是pom文件里面刚才没有介绍的依赖。

<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>2.2.1.RELEASE</version>
        </dependency>
复制代码

而后咱们下一个测试配置类ConfigController读取useLocalCache字段的值,以下:

@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {

    @Value("${useLocalCache:false}")
    private boolean useLocalCache;

    @RequestMapping("/get")
    public boolean get() {
        return useLocalCache;
    }
}
复制代码

重启该服务,浏览器输入http://localhost:8081/config/get,返回false。这是正常的,由于咱们配置文件根本写入这个useLocalCache,因此读取的是默认值false。咱们这个时候能够打开控制台,添加配置文件。

点击加号,在data id输入example.properties,

确认发布后,再次在浏览器输入http://localhost:8081/config/get,发现返回true,这正是咱们在控制台修改的配置,已经自动刷新了。

这里还支持导入配置,我猜想能够结合网关,将路由信息修改后导入,项目会自动获取配置信息,从而能够解决动态路由问题。免责声明,这里只是猜想,并未实践过

参考地址:

nacos官网:nacos.io/zh-cn/docs/…

相关文章
相关标签/搜索