【Apollo】(1)--- Apollo入門介紹篇

Apollo入門介紹篇

Apollo有一點很好,就是它是由國內攜程團隊開發,並且文檔寫的很全,代碼也徹底開源。若是去了解它也能夠直接去看它的官方文檔。mysql

1、配置中心概念

一、背景

在實際開發中都會與配置打交道,舉個簡單例子,咱們開發項目確定會鏈接數據庫,mysql也好oracle也好。那麼咱們 本地環境線上環境 鏈接的數據確定是不同的,git

那若是沒有配置中心,咱們要作的就是在發佈前把本地數據庫配置信息改爲線上環境,若是僅僅是切換數據庫那倒還好,但隨着程序功能的日益複雜,程序的配置日益github

增多好比,各類功能的開關參數的配置服務器的地址。同時對程序配置的指望值也愈來愈高:配置修改後 實時生效灰度發佈分環境spring

分集羣管理配置完善的權限審覈機制。在這樣的大環境下,傳統的經過配置文件、數據庫等方式已經愈來愈沒法知足開發人員對配置管理的需求。sql

Apollo配置中心應運而生!數據庫

二、配置分類和場景

在現代開發中配置的分類仍是蠻多的,下面借用楊波老師的一張圖,來看下目前比較常見的分類及場景。緩存

三、開關驅動開發

在咱們實際開發業務中,開關這個概念實際上是很是常見的,有些時候是須要用戶在頁面去進行開關操做,那麼咱們通常數據庫新建配置表來存儲用戶操做的開關。服務器

但有些時候是不須要用戶去操做的,只需咱們後臺開發人員進行配置開關的,那其實就不須要在數據庫去建一個配置表,而是經過配置中心就能夠完成了。網絡


2、Apollo配置中心概念

一、簡介

Apollo(阿波羅)是攜程框架部門研發的開源配置管理中心,可以集中化管理應用不一樣環境、不一樣集羣的配置,配置修改後可以實時推送到應用端,而且具有規範的權限、oracle

流程治理等特性。

二、優勢

Apollo做爲爲配置中心,有着很是多的優勢。

三、四個維度

Apollo支持4個維度管理Key-Value格式的配置:

一、application (應用)
二、environment (環境)
三、cluster (集羣)
四、namespace (命名空間)

一、application

一、Apollo 客戶端在運行時須要知道當前應用是誰,從而能夠根據不一樣的應用來獲取對應應用的配置。

二、每一個應用都須要有惟一的身份標識,能夠在代碼中配置 app.id 參數來標識當前應用,Apollo 會根據此指來辨別當前應用。

二、environment

在實際開發中,咱們的應用常常要部署在不一樣的環境中,通常狀況下分爲 開發、測試、生產 等等不一樣環境,不一樣環境中的配置也是不一樣的,在 Apollo 中默認提供了

四種環境:

FAT:功能測試環境

UAT:集成測試環境

DEV:開發環境

PRO:生產環境

在程序中若是想指定使用哪一個環境,能夠配置變量 env 的值爲對應環境名稱便可。

三、cluster

一、一個應用下不一樣實例的分組,好比典型的能夠按照數據中心分,把上海機房的應用實例分爲一個集羣,把北京機房的應用實例分爲另外一個集羣。

二、對不一樣的集羣,同一個配置能夠有不同的值,好比說上面所指的兩個北京、上海兩個機房設置兩個集羣,都有 mysql 配置參數,其中參數中配置的地址是不同的。

四、namespace

一個應用中不一樣配置的分組,能夠簡單地把 namespace 類比爲不一樣的配置文件,不一樣類型的配置存放在不一樣的文件中,如數據庫配置文件,RPC 配置文件等。

熟悉 SpringBoot 的都知道,SpringBoot 項目都有一個默認配置文件 application.yml,若是還想用多個配置,能夠建立多個配置文件來存放不一樣的配置信息,經過

指定 spring.profiles.active 參數指定應用不一樣的配置文件。這裏的 namespace 概念與其相似,將不一樣的配置放到不一樣的配置 namespace 中。

Namespace 分爲兩種權限,分別爲:

  • public(公共的): public權限的 Namespace,能被任何應用獲取。
  • private(私有的): 只能被所屬的應用獲取到。一個應用嘗試獲取其它應用 private 的 Namespace,Apollo 會報 「404」 異常。

五、本地緩存

Apollo客戶端會把從服務端獲取到的配置在 本地文件系統緩存 一份,用於在遇到服務不可用,或網絡不通的時候,依然能從本地恢復配置,不影響應用正常運行。

本地緩存路徑默認位於如下路徑,因此請確保 /opt/data或C:\opt\data\目錄存在,且應用有讀寫權限

  • Mac/Linux: /opt/data/{appId}/config-cache
  • Windows: C:\opt\data{appId}\config-cache

本地配置文件會如下面的文件名格式放置於本地緩存路徑下:

{appId}+{cluster}+{namespace}.properties

3、Apollo和SpringCloudConfig的對比

網上有一張圖總結的很完整

總結

一、SpringCloudConfig優點是對SpringBoot原生支持,且是SpringCloud組件。缺點是 無界面管理且須要git,SpringCloudBus、Mq支持其動態更新

二、Apollo優點是技術棧單一,僅須要Mysql就能夠支持動態更新配置,便於維護。缺點是否是SpringCloud體系,雖然開源,版本更新也活躍,可是對SpringCloud的

支持沒有SpringCloudConfig的好。


參考

一、Apollo配置中心介紹

二、SpringBoot 集成 Apollo 配置中心

三、Apollo做爲微服務的配置中心



別人罵我胖,我會生氣,由於我內心認可了我胖。別人說我矮,我就會以爲可笑,由於我內心知道我不可能矮。這就是咱們爲何會對別人的攻擊生氣。
攻我盾者,乃我心裏之矛(26)
相關文章
相關標籤/搜索