NACOS是构建云计算的本地应用程序易于使用的动态服务发现,配置和服务管理平台。 详情见官网html
Nacos 快速开始 这是官网地址,你们能够直接看文档。 若是不肯看文档的,我下面简单的介绍一下如何下载,使用。 官网是从github上下载源码,可是咱们下载比较慢,能够去码云下载linux
看了半天的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-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
就是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。咱们这个时候能够打开控制台,添加配置文件。
这里还支持导入配置,我猜想能够结合网关,将路由信息修改后导入,项目会自动获取配置信息,从而能够解决动态路由问题。免责声明,这里只是猜想,并未实践过
参考地址:
nacos官网:nacos.io/zh-cn/docs/…