Apollo簡介及專案整合

2022-04-21 22:47:25 字數 2207 閱讀 3798

隨著程式功能的日益複雜,程式的配置日益增多:各種功能的開關、引數的配置、伺服器的位址…… 對程式配置的期望值也越來越高:配置修改後實時生效,灰度發布,分環境、分集群管理配置,完善的許可權、審核機制…… 在這樣的大環境下,傳統的通過配置檔案、資料庫等方式已經越來越無法滿足開發人員對配置管理的需求。 apollo配置中心應運而生!

apollo(阿波羅)是攜程框架部門研發的開源配置管理中心,能夠集中化管理應用不同環境、不同集群的配置,配置修改後能夠實時推送到應用端,並且具備規範的許可權、流程治理等特性。 apollo支援4個維度管理key-value格式的配置:

environment (環境)

cluster (集群)

namespace (命名空間)

上圖為apollo的基礎模型:

使用者在配置中心對配置進行修改並發布

配置中心通知apollo客戶端有配置更新

apollo客戶端從配置中心拉取最新的配置、更新本地配置並通知到應用

上圖簡要描述了apollo的總體設計,我們可以從下往上看:

上圖簡要描述了apollo客戶端的實現原理:

客戶端和服務端保持了乙個長連線,從而能第一時間獲得配置更新的推送。(通過http long polling實現)

客戶端還會定時從apollo配置中心服務端拉取應用的最新配置。

客戶端從apollo配置中心服務端獲取到應用的最新配置後,會儲存在記憶體中

客戶端會把從服務端獲取到的配置在本地檔案系統快取乙份

應用程式可以從apollo客戶端獲取最新的配置、訂閱配置更新通知

<

dependency

>

<

groupid

>com.ctrip.framework.apollo

groupid

>

<

artifactid

>apollo-client

artifactid

>

<

version

>1.1.0

version

>

dependency

>

需要在執行時提供給apollo客戶端客戶應用當前環境的apollo meta server資訊。

生產上是在啟動指令碼jvm引數中配置

為了實現meta server的高可用,推薦通過slb(software load balancer)做動態負載均衡。meta server位址也可以填入ip,如 不過生產環境還是建議使用網域名稱(走slb),因為機器擴容、縮容等都可能導致ip列表的變化。

apollo客戶端會把從服務端獲取到的配置在本地檔案系統快取乙份,用於在遇到服務不可用,或網路不通的時候,依然能從本地恢復配置,不影響應用正常執行。

本地快取路徑預設位於以下路徑,所以請確保 /opt/data 或 c:\opt\data\ 目錄存在,且應用有讀寫許可權。

本地配置檔案會以下面的檔名格式放置於本地快取路徑下:

cluster就是應用使用的集群,一般在本地模式下沒有做過配置的話,就是default

以上是必選的配置。下面針對不同型別專案進行單獨整合配置。

需要把apollo的自定義命名空間(namespace)新增到spring配置檔案頭中,然後新增apollo自定義標籤。

相對於基於xml的配置,基於註解的配置是目前比較流行的方式。 注意@enableapolloconfig要和@configuration一起使用,不然不會生效

與spring boot的整合相對比較簡單,只需要在啟動主類中新增@enableapolloconfig即可

Apollo簡介及工作原理

1 使用者在配置中心對配置進行修改並發布 2 配置中心通知apollo客戶端有配置更新 3 apollo客戶端從配置中心拉取最新的配置 更新本地配置並通知到應用 上圖簡要描述了apollo的總體設計,我們可以從下往上看 1 config service提供配置的讀取 推送等功能,服務物件是apoll...

apollo應用配置整合及使用

1.開發環境apollo位址 2.pom.xml引用客戶端 com.ctrip.framework.apollo apollo client 1.1.0 3.springboot專案整合 4.spring專案整合 5.使用及應用 springboot start 啟動類加上 configuratio...

springboot整合Apollo配置中心(一)

apollo配置中心是攜程框架部門研發的分布式配置中心,能夠集中化管理應用不同環境,不同集群的配置,配置修改後能夠在1秒內將配置推送到服務端,適用於微服務配置管理場景。這是apollo配置中心的官方介紹,已經十分的詳細清晰了,這次使用springboot整合apollo主要是為了解決幾個困擾我的問題...