首頁 > 軟體

SpringCloud Nacos作為設定中心超詳細講解

2022-12-09 14:02:19

前言

在單體架構的時候我們可以將設定寫在組態檔中,但有⼀個缺點就是每次修改設定都需要重啟服務才能生效。

當應用程式範例比較少的時候還可以維護。如果轉向微服務架構有成百上千個範例,每修改⼀次設定要將全部範例重啟,不僅增加了系統的不穩定性,也提高了維護的成本。

那麼如何能夠做到服務不重啟就可以修改設定?所有就產生了四個基礎訴求:

  • 需要支援動態修改設定
  • 需要動態變更有多實時
  • 變更快了之後如何管控控制變更風險,如灰度、回滾等
  • 敏感設定如何做安全設定

Nacos設定模型

  • Nacos 提供視覺化的控制檯,可以對設定進行釋出、更新、刪除、灰度、版本管理等功能。
  • SDK 可以提供釋出設定、更新設定、監聽設定等功能。
  • SDK 通過 GRPC 長連線監聽設定變更,Server 端對比 Client 端設定的MD5 和本地MD5是否相等,不相等推播設定變更。
  • SDK 會儲存設定的快照,當伺服器端出現問題的時候從本地獲取。

設定介紹

在 Nacos Spring Cloud 中,dataId 的完整格式如下:

${prefix}-${spring.profiles.active}.${file-extension}

  • prefix 預設為 spring.application.name 的值,也可以通過設定項 spring.cloud.nacos.config.prefix來設定。
  • spring.profiles.active 即為當前環境對應的 profile,詳情可以參考 Spring Boot檔案。 注意:當 spring.profiles.active 為空時,對應的連線符 - 也將不存在,dataId 的拼接格式變成 ${prefix}.${file-extension}
  • file-exetension 為設定內容的資料格式,可以通過設定項 spring.cloud.nacos.config.file-extension 來設定。支援 properties 、 yaml 和 yml 型別。

實際演練

在springcloud專案中要使用Nacos設定中心,就必須將相關資訊設定到bootstrap(.properties/.yaml)組態檔中,所以要讓springcloud識別bootstrap檔案就要匯入相關依賴:

		<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>

然後在bootstrap檔案中進行設定:

spring:
  cloud:
    nacos:
      discovery:    #nacos的地址,不寫預設就是127.0.0.1:88848
        server-addr: 192.168.11.233:18848
        username: nacos
        password: nacos
      config:
        server-addr: 192.168.11.233:18848
        file-extension: yaml    #重點:檔案格式就是在nacos中建立的組態檔是什麼格式,要統一
        namespace: dev-namespace    # 名稱空間的ID,我這裡是自定義的,也可以自動生成,後面有講解
        group: DEFAULT_GROUP    #預設組別,用於區分同一個namespace下的同名組態檔
        prefix: consumer01    #檔案字首,不寫預設是 spring.application.name
  profiles:
    active: dev

由上面的設定可以得到檔名為:consumer01-dev.yaml,到Nacos中建立對應的組態檔:

首先建立名稱空間:

因為我之前已經建立過dev了,現在以test為例:

然後到dev下建立組態檔:

這兩個地方都可以建立:

寫入自己的設定即可:

OK,然後就可以將原專案中的application.yaml刪除或註釋掉,重啟專案,能夠正常執行!

到此這篇關於SpringCloud Nacos作為設定中心超詳細講解的文章就介紹到這了,更多相關SpringCloud Nacos設定中心內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com