天天看點

一文帶你掌握nacos基礎應用1.為什麼使用選擇nacos2.Nacos快速開始3.springboot注冊進入nacos4.配置中心

一文帶你掌握nacos基礎應用1.為什麼使用選擇nacos2.Nacos快速開始3.springboot注冊進入nacos4.配置中心

1.為什麼使用選擇nacos

nacos在springcloud體系中作為注冊中心與配置中心使用。相當于eureka與apollo的功能。

一個老生常談的問題nacos和eureka差別,下圖是樓主在網上查找到。

一文帶你掌握nacos基礎應用1.為什麼使用選擇nacos2.Nacos快速開始3.springboot注冊進入nacos4.配置中心

但是在樓主實際應用中 還有以下有點特别稱道:

  1. nacos有配置功能,相對于樓主之前的eureka+apollo 這無疑大大的簡化了系統的複雜性。
  2. nacos使用了資料庫進行管理資料,使在處理資料時心裡更舒服了。
  3. nacos擁有namespace和gourp的概念,可以隔離同名的服務。這樣在多人起後端服務時,可以注冊到一個nacos服務 隔離開就可以了。

2.Nacos快速開始

這個快速開始手冊是幫忙您快速在您的電腦上,下載下傳、安裝并使用 Nacos。

1.版本選擇

您可以在Nacos的

release notes

部落格

中找到每個版本支援的功能的介紹,目前推薦的穩定版本為1.4.2或2.0.1。

2.預備環境準備

Nacos 依賴

Java

環境來運作。如果您是從代碼開始建構并運作Nacos,還需要為此配置

Maven

環境,請確定是在以下版本環境中安裝使用:

  1. 64 bit OS,支援 Linux/Unix/Mac/Windows,推薦選用 Linux/Unix/Mac。
  2. 64 bit JDK 1.8+; 下載下傳 & 配置
  3. Maven 3.2.x+;

3.下載下傳源碼或者安裝包

你可以通過源碼和發行包兩種方式來擷取 Nacos。

1.從 Github 上下載下傳源碼方式

git clone https://github.com/alibaba/nacos.git
cd nacos/
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U  
ls -al distribution/target/

// change the $version to your actual path
cd distribution/target/nacos-server-$version/nacos/bin      

2.下載下傳編譯後壓縮包方式

您可以從

最新穩定版本

nacos-server-$version.zip

包。

unzip nacos-server-$version.zip 或者 tar -xvf nacos-server-$version.tar.gz
  cd nacos/bin      

4.啟動伺服器

1.Linux/Unix/Mac

啟動指令(standalone代表着單機模式運作,非叢集模式):

sh startup.sh -m standalone      

如果您使用的是ubuntu系統,或者運作腳本報錯提示[[符号找不到,可嘗試如下運作:

bash startup.sh -m standalone      

2.Windows

startup.cmd -m standalone      

當idea使用源碼單機啟動時需要以下配置

一文帶你掌握nacos基礎應用1.為什麼使用選擇nacos2.Nacos快速開始3.springboot注冊進入nacos4.配置中心
一文帶你掌握nacos基礎應用1.為什麼使用選擇nacos2.Nacos快速開始3.springboot注冊進入nacos4.配置中心
-Dnacos.standalone=true      

5.單機時使用資料庫

當不添加配置時,預設是使用記憶體儲存資訊,我們可以添加資料庫配置,使資料儲存在資料庫内.

暫時官方隻支援mysql,其他資料庫需要自己手動修改。

1.源碼啟動

使用源碼idea啟動需要修改以下檔案的以下位置

一文帶你掌握nacos基礎應用1.為什麼使用選擇nacos2.Nacos快速開始3.springboot注冊進入nacos4.配置中心

2.已經打包的jar包

nacos\conf\application.properties修改資料庫配置

一文帶你掌握nacos基礎應用1.為什麼使用選擇nacos2.Nacos快速開始3.springboot注冊進入nacos4.配置中心

6.啟動成功

出現以下圖案代表啟動成功,看出來模式為單機模式,路徑為Console輸出,通路即可

一文帶你掌握nacos基礎應用1.為什麼使用選擇nacos2.Nacos快速開始3.springboot注冊進入nacos4.配置中心
一文帶你掌握nacos基礎應用1.為什麼使用選擇nacos2.Nacos快速開始3.springboot注冊進入nacos4.配置中心
對于官網叢集搭建的要求,是要求大企業的,個人認為小公司如果沒有條件可以不必滿足,也可以正常啟動。但是有條件還是建議上叢集。

3.springboot注冊進入nacos

1.修改pom檔案

<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!-- SpringCloud Alibaba Nacos Config -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>      

在pom.xml檔案中最好選擇合理的版本,否則會報各種各樣的錯 。

版本可以根據官方文檔選擇:

https://github.com/alibaba/spring-cloud-alibaba/wiki/版本說明

同時為了保證版本相同建議再父工程中加入以下配置,意思是子工程groupid為org.springframework.cloud,com.alibaba.cloud,org.springframework.boot的都依賴父工程版本

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <!--maven不支援多繼承,使用import來依賴管理配置-->
                <scope>import</scope>
            </dependency>
            <!-- SpringCloud Alibaba 微服務 -->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!-- SpringBoot 依賴配置 -->
            <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>      

2.修改bootstrap.xml

這裡一定要使用bootstrap.yml而不是application.yml,因為bootstrap.yml運作先于後者,如果使用application.yml可能會出現即使有注冊的位址,還是去連接配接localhost:8848的情況。

spring:
  application:
    name: systemp
    # 資料源配置
  cloud:
    nacos:
      discovery:
        # 服務注冊位址
        server-addr: 192.168.xx.x:8848
        #命名空間
        namespace: b80f0aa4-3af2-a6e3-c6fda24c2bc0
        #分組
        group: xxx
      config:
        # 配置中心位址
        server-addr: 192.168.xx.xx:8848
        # 配置檔案格式
        file-extension: yml
        #命名空間
        namespace: b80f0aa4-3af2-a6e3-c6fda24c2bc0
        #分組
        group: xxx      
可以為服務指定namespace和group,在一個namespace和group中的服務隻能擷取同namespace和group中的服務,這樣可以同時配置dev和pro環境。擷取小組内的小夥伴都可以連接配接一個nacos服務,而不是像eureka 一人啟動一個。

1.建立命名空間

配置檔案中namespace是需要建立的,方式如圖。

一文帶你掌握nacos基礎應用1.為什麼使用選擇nacos2.Nacos快速開始3.springboot注冊進入nacos4.配置中心
配置檔案中是命名空間id

2.建立分組

分組不用在nacos中建立 ,直接編寫即可。

3.修改啟動類

在spring boot啟動類上加入@EnableDiscoveryClient注解即可。

@EnableDiscoveryClient
@SpringBootApplication
public class GetwayApplication {

    public static void main(String[] args) {
        //去除nacos日志
        System.setProperty("nacos.logging.default.config.enabled", "false");
        SpringApplication.run(GetwayApplication.class, args);
    }

}      
注意:如果使用了logback作為日志

System.setProperty("nacos.logging.default.config.enabled", "false");

需要添加 否則會因為日志命名報錯

4.啟動

然後啟動服務,通路ip:8848/nacos可以驗證是否注冊成功。

一文帶你掌握nacos基礎應用1.為什麼使用選擇nacos2.Nacos快速開始3.springboot注冊進入nacos4.配置中心

同時也釋出到了指定的namespace和groupid。

4.配置中心

配置中心:bootstrap.yml中的配置可以通過nacos配置修改,同時大部門不需要重新開機服務就可以生效。

由于引入了nacos,樓主不再使用apollo配置中心。變更原因如下

  1. 由于架構變更為springcloud alibaba,nacos可以承擔起eureka+apollo的功能。
  2. 可以降低系統的複雜性。友善運維。
  3. 對配置中心的需求僅有動态配置,無更細膩話的權限和灰階釋出等功能要求。

1.實戰整合springboot

建議啟動類使用bootstrap.yml

1.建立nacos配置

一文帶你掌握nacos基礎應用1.為什麼使用選擇nacos2.Nacos快速開始3.springboot注冊進入nacos4.配置中心
請注意選擇合适命名空間
一文帶你掌握nacos基礎應用1.為什麼使用選擇nacos2.Nacos快速開始3.springboot注冊進入nacos4.配置中心

配置解釋如下:

  1. Data ID的命名格式如下:{spring.application.name}-{spring.profiles.active}.{檔案類型},也就是系統名稱+dev/pro.yaml(一般情況)見下圖。
    一文帶你掌握nacos基礎應用1.為什麼使用選擇nacos2.Nacos快速開始3.springboot注冊進入nacos4.配置中心
    一文帶你掌握nacos基礎應用1.為什麼使用選擇nacos2.Nacos快速開始3.springboot注冊進入nacos4.配置中心
如果沒有spring.profiles.active會省略“-”與“spring.profiles.active”
  1. group:其中需要注意namespace與group需要與nacos中配置對應(這兩個概念上文有介紹),否則會擷取不到配置。
  2. 配置格式:這裡因為使用了bootstrap.yml是以選擇上述配置。
  3. 配置内容:需要在nacos中更改的配置項。

2.配置成功

如果成功:

一文帶你掌握nacos基礎應用1.為什麼使用選擇nacos2.Nacos快速開始3.springboot注冊進入nacos4.配置中心
切記namespace與group一定要比對。

同時可以監控到那台服務使用該配置。

一文帶你掌握nacos基礎應用1.為什麼使用選擇nacos2.Nacos快速開始3.springboot注冊進入nacos4.配置中心

3.用戶端接口編寫

@RestController
@RefreshScope
public class DemoController {  

    @Value("${nacostest.demo}")
    private String demo;

    @GetMapping("/testConfig")
    public String testConfig()  {
        return demo;
    }
}      

@RefreshScope不要少寫!否則報錯!

改變配置多次調用接口,可以發現傳回值發生變化。