天天看點

微服務架構 | 2. 服務配置管理

目錄

  • 前言
  • 1. 配置管理基礎知識
    • 1.1 為什麼需要配置管理
    • 1.2 配置管理需要遵從的四個原則
    • 1.3 配置在什麼時候被讀取
    • 1.4 配置管理的架構概念
    • 1.5 配置管理有多種選擇
    • 1.6 Spring Cloud 的三種配置檔案(.xml .yml 與 .properties)
    • 1.7 Spring Cloud 的兩類配置檔案(application 與 bootstrap)
    • 1.8 目前幾種流行的配置中心對比
  • 2. Spring Cloud Config
  • 3. Alibaba Nacos
  • 最後

參考資料:

《Spring Microservices in Action》

《Spring Cloud Alibaba 微服務原理與實戰》

《B站 尚矽谷 SpringCloud 架構開發教程 周陽》

将配置寫入一個 config 常量類往往會有些問題,每次對配置進行更改時,應用程式都必須重新編譯和重新部署;

在少量的應用程式中可以将配置寫在低層級的屬性檔案,如:YAML、JSON 或 XML;其中包含資料庫和中間件連接配接資訊,以及驅動應用程式行為的相關中繼資料;

但是在處理可能包含數百個微服務的基于雲的應用程式,其中每個微服務可能會運作多個服務執行個體時,需要對配置進行集中管理;

  • 分離:将服務配置資訊與服務的實際實體部署完全分開;
  • 抽象:将通路配置資料的功能抽象到一個服務接口;
  • 集中:将應用程式配置集中在盡可能少的存儲庫中 ;
  • 穩定:保證其高可用和備援;

微服務架構 | 2. 服務配置管理

微服務架構 | 2. 服務配置管理
  • 配置管理的連接配接資訊(連接配接憑據、服務端點等)将在微服務啟動時被傳遞給微服務;
  • 配置管理的更改通常通過建構和部署管道來處理,其中配置的更改可以通過版本資訊進行标記,并通過不同的環境進行部署;

微服務架構 | 2. 服務配置管理
微服務架構 | 2. 服務配置管理

  • .xml
    • 一種可擴充标記語言;
    • 用于标記電子檔案使其具有結構性的标記語言,可以用來标記資料、定義資料類型;
    • 是一種允許使用者對自己的标記語言進行定義的源語言;
    • 适合 Web 傳輸;
    • 用于引入

      pom

      依賴檔案;
  • .yml(下稱 yml)
    • 一種比 XML 更為簡單易讀的序列化語言,更像是一種資料格式;
    • 也稱 yaml,yml 檔案擴充名是 yaml 的縮寫;
    • 以資料為中心,比 json、xml 等更适合做配置檔案;
    • 複雜配置建議用 yml。易讀性強;
    • 支援的多種程式設計語言種類(支援python、go等大量程式設計語言);
    • 支援中文内容;
    • 支援清單;
    • 優先加載,會被後加載的 properties 覆寫;
  • .properties(下稱 properties)
    • 作用同 yml;
    • 簡單配置用 properties;
    • properties 支援中文内容隻能用 unicode 編碼;
    • 隻支援鍵值對資料;
    • 加載優先級低,會覆寫 yml 的内容;

  • application.yml 或 application.properties(以下統稱:application)
    • 主要用于 Spring Boot 項目的自動化配置;
    • 是使用者級的資源配置項;
  • bootstrap.yml 或 bootstrap.properties(以下統稱:bootstrap)
    • 是系統級的,由父

      ApplicationContext

      加載,加載優先于 application;
    • 主要用于從額外的資源來加載配置資訊;
    • 可以在本地外部配置檔案中解密屬性(用于加密/解密的場景);
    • 預設不能被本地相同配置覆寫;
    • bootstrap可以了解成系統級别的一些參數配置,這些參數一般是不會變動的;
    • 使用 Spring Cloud Config 配置中心時,這時需要在 bootstrap 配置檔案中添加連接配接到配置中心的配置屬性來加載外部配置中心的配置資訊;
    • 需要注意一個例外:若 bootstrap 裡面配置了 server.port=8888,而 application 裡面配置了 server.port=7777。事實上,項目啟動時的端口号是 7777(bootstrap不關心這個屬性);
  • 相同點:
    • 共用一個環境,是任何 Spring 應用程式的外部來源;

名稱 廠商 特點
Config Spring Cloud 非分布式鍵值存儲;提供了對 Spring 和非 Spring 服務的緊密內建;可以使用多個後端來存儲配置資料 , 包括共享檔案系統、Eureka、Consul 和 Git 等
Nacos Alibaba 具有 CRUD、版本管理、灰階管理、監聽管理、推送軌迹、聚合資料等功能

SpringCloud Config 為微服務架構中的微服務提供集中化的外部配置支援,配置伺服器為各個不同微服務應用的所有環境提供了一個中心化的外部配置;
  • 點選跳轉:微服務架構 | 2.1 使用 Spring Cloud Config 管理服務配置項

Nacos 緻力于解決微服務中的統一配置、服務注冊與發現等問題。它提供了一組簡單易用的特性集,幫助開發者快速實作動态服務發現、服務配置、服務中繼資料及流量管理;
  • 點選跳轉:微服務架構 | 2.2 Alibaba Nacos 的統一配置管理
  • 點選跳轉:微服務架構 | *2.3 Spring Cloud 啟動及加載配置檔案源碼分析(以 Nacos 為例)
  • 點選跳轉:微服務架構 | *2.4 Nacos 擷取配置與事件訂閱機制的源碼分析
  • 點選跳轉:微服務架構 | *2.5 Nacos 長輪詢定時機制的源碼分析

新人制作,如有錯誤,歡迎指出,感激不盡!

歡迎關注公衆号,會分享一些更日常的東西!

如需轉載,請标注出處!

微服務架構 | 2. 服務配置管理