前言:Apollo(阿波羅)是攜程研發的開源配置管理中心,可以集中管理應用不一樣環境、不一樣集羣的配置。同一環境統一集羣的配置下有namespace概念,具體信息官方文檔以下:git
- 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一致。
- 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」github