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
註冊服務已經完成了,至於其餘的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/…