前言:Apollo(阿波羅)是攜程研發的開源配置管理中心,能夠集中管理應用不同環境、不同集群的配置。同一環境統一集群的配置下有namespace概念,具體信息官方文檔如下:
- namespace是配置項的集合,類似於一個配置文件的概念。
- application的namespace:Apollo在創建項目的時候,都會默認創建一個“application”的namespace。顧名思義,“application”是給應用自身使用的。
- namespace的格式:配置文件有多種格式,例如:properties、xml、yml、yaml、json等,同樣的,namespace也有具有這些格式。
- 非properties格式的namespace,在客戶端使用時需要調用
ConfigService.getConfigFile(String namespace, ConfileFormat configFileFormat)
來獲取;如果使用http接口調用時,對應的namespace參數需要傳入namespace的名字加上后綴名,如datasources.json
. apollo-client 1.3.0
版本開始對yaml/yml做了更好的支持,使用起來和properties格式一致:Config config = ConfigService.getConfig("application.yml");
,Spring的注入方式也和properties一致。
- 非properties格式的namespace,在客戶端使用時需要調用
- namespace的獲取權限分類(這里的獲取權限是相對於Apollo客戶端來說的)
- private:只能被所屬應用獲取到,一個應用嘗試獲取其他應用private的namespace,Apollo會報“404”異常。
- Public :能被任何應用獲取。http請求直接傳public的集群+namespace名稱,就可以獲取到公共配置。
- namespace的類型
- 私有類型:具有private權限。
- 公共類型:具有public權限,公共類型的namespace通過名稱標識,因此名稱必須全局唯一。具體使用場景如下:
- 部門級別共享的配置
- 小組級別共享的配置
- 幾個項目之間共享的配置
- 中間件客戶端的配置
- 關聯類型:又稱為繼承類型,具有
private
權限。關聯類型的name space繼承於公共類型的name space,用於覆蓋公共namespace的某些配置。
原文:https://github.com/ctripcorp/apollo/wiki/Apollo核心概念之“Namespace”