Apollo 學習(一)

Apollo 學習(一)

演示環境
GitHub

一、namespace

1. 什麼是Namespace?

Namespace是配置項的集合,類似於一個配置文件的概念。

2. 什麼是“application”的Namespace?

Apollo在創建項目的時候,都會默認創建一個“application”的Namespace。顧名思義,“application”是給應用自身使用的,熟悉Spring Boot的同學都知道,Spring Boot項目都有一個默認配置文件application.yml。在這裏application.yml就等同於“application”的Namespace。對於90%的應用來說,“application”的Namespace已經滿足日常配置使用場景了。

客戶端獲取“application” Namespace的代碼如下:

  Config config = ConfigService.getAppConfig();

客戶端獲取非“application” Namespace的代碼如下:

  Config config = ConfigService.getConfig(namespaceName);

3. Namespace的格式有哪些?

配置文件有多種格式,例如:properties、xml、yml、yaml、json等。同樣Namespace也具有這些格式。在Portal UI中可以看到“application”的Namespace上有一個“properties”標籤,表明“application”是properties格式的。

注:非properties格式的namespace,在客戶端使用時需要調用ConfigService.getConfigFile(String namespace, ConfigFileFormat configFileFormat)來獲取,如果使用Http接口直接調用時,對應的namespace參數需要傳入namespace的名字加上後綴名,如datasources.json。

4. Namespace的獲取權限分類

Namespace的獲取權限分爲兩種:

  • private (私有的)
  • public (公共的)

這裏的獲取權限是相對於Apollo客戶端來說的。

4.1 private權限

private權限的Namespace,只能被所屬的應用獲取到。一個應用嘗試獲取其它應用private的Namespace,Apollo會報“404”異常。

4.2 public權限

public權限的Namespace,能被任何應用獲取。

5. Namespace的類型

Namespace類型有三種:

  • 私有類型
  • 公共類型
  • 關聯類型(繼承類型)

5.1 私有類型

私有類型的Namespace具有private權限。例如上文提到的“application” Namespace就是私有類型。

5.2 公共類型

5.2.1 含義

公共類型的Namespace具有public權限。公共類型的Namespace相當於遊離於應用之外的配置,且通過Namespace的名稱去標識公共Namespace,所以公共的Namespace的名稱必須全局唯一。

5.2.2 使用場景
  • 部門級別共享的配置
  • 小組級別共享的配置
  • 幾個項目之間共享的配置
  • 中間件客戶端的配置

5.3 關聯類型

5.3.1 含義

關聯類型又可稱爲繼承類型,關聯類型具有private權限。關聯類型的Namespace繼承於公共類型的Namespace,用於覆蓋公共Namespace的某些配置。例如公共的Namespace有兩個配置項

k1 = v1



k2 = v2

然後應用A有一個關聯類型的Namespace關聯了此公共Namespace,且覆蓋了配置項k1,新值爲v3。那麼在應用A實際運行時,獲取到的公共Namespace的配置爲:

k1 = v3



k2 = v2
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章