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/…

相關文章
相關標籤/搜索