AgileConfig-輕量級配置中心 1.1.0 釋出,支援應用間配置繼承
阿新 • • 發佈:2020-11-30
AgileConfig輕量級配置中心自第一個版本釋出不知不覺已經半年了。在並未進行什麼推廣的情況下收到了250個star,對我有很大的鼓舞,並且也有不少同學試用,並且給出了寶貴的意見,非常感謝他們。其中有一些意見非常好,但是一直沒有開發。主要是一來下半年比較忙(懶),二來我不想把AgileConfig搞的過於複雜。但其中有個需求被很多同學提及過,就是希望能支援應用間的繼承(關聯),類似Apollo的公共namespace的概念。比如微服務應用之間有不少公共配置項,可以配置在一個應用內,然後其他應用繼承它,這樣每個應用就不用重複的配置公共配置。我思考了一下,這個配置確實是個非常有用的功能,於是花了點時間實現了它。
Github地址:[https://github.com/kklldog/AgileConfig](https://github.com/kklldog/AgileConfig) 求star 。
下面的示例簡單演示下如何使用AgileConfig讀取配置並且使用繼承功能
## 使用docker啟動一個AgileConfig例項
```
sudo docker run --name agile_config -e adminConsole=true -e db:provider=sqlserver -e db:conn="Persist Security Info = False; User ID =dev; Password =dev@123,; Initial Catalog =agile_config_test; Server =." -p 5000:5000 kklldog/agile_config:latest
```
使用docker命令執行一個AgileConfig例項,這是最簡單的方法。當然你也可以拉原始碼下來編譯釋出使用IIS來執行它。
配置環境變數:
adminConsole=true 開啟控制檯功能
db:provider=sqlserver 資料庫為SqlServer
db:conn="Persist Security Info = False; User ID =dev; Password =dev@123,; Initial Catalog =agile_config_test; Server =." 配置資料庫連線
-p 5000:5000 容器的5000口對映本地的5000口
## 配置AgileConfig
第一次執行需要配置管理密碼
![](https://camo.githubusercontent.com/f147bfbc04551c69d4d33039fe60943dbede4b9db6756704aa395871acc29c49/68747470733a2f2f73312e617831782e636f6d2f323032302f30362f30392f74344467494a2e706e67)
密碼配置完成後重新登入進系統,開始配置節點
![D66God.png](https://s3.ax1x.com/2020/11/29/D66God.png)
在設計的時候節點跟控制檯是分開的,但是為了部署簡單最後節點跟控制檯被實現在一起了。所以採用單節點部署的時候,該例項既是節點又是控制檯,所以也需要把本節點的地址加入到節點列表裡,以便控制檯能管理到。
## 新增應用
AgileConfig的初始化完成了,現在我們開始新增應用。
新增“公共應用”
![D66oTJ.png](https://s3.ax1x.com/2020/11/29/D66oTJ.png)
新增應用名稱,應用id,勾選“可被繼承”。點選確定完成公共的建立。系統只支援一層的繼承,可被繼承的應用不能再繼承其它應用。
建立完成後為公共應用新增配置項
![D66jOO.png](https://s3.ax1x.com/2020/11/29/D66jOO.png)
為公共應用新增一個配置項:鍵為public_key_01 值為0001 。
新增“私有應用”
![D6cKts.png](https://s3.ax1x.com/2020/11/29/D6cKts.png)
新增一個私有應用,不要選“可被繼承”。點選繼承應用欄的加號會彈出可以被的繼承應用列表,選擇“公共應用”。點選“確定”完成建立。
為私有應用建立配置項
![D6c091.png](https://s3.ax1x.com/2020/11/29/D6c091.png)
為私有應用新增一個配置項:鍵為private_key_01 值為0002 。
> 注意:把所有的配置都上線,否則客戶端讀不到配置。
## 客戶端讀取配置
### 建立Asp.net Core WebApi專案
我們建立一個WebApi專案做為客戶端來演示如何讀取配置
![D6giE4.png](https://s3.ax1x.com/2020/11/29/D6giE4.png)
### 使用nuget引用AgileConfig.Client
```
Install-Package AgileConfig.Client -Version 1.1.0
```
### 整合AgileConfig.Client
使用nuget安裝成功後,切換到Program.cs開始整合AgileConfigClient。
```
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((ctx,cfg)=> {
var appId = "private_01";
var secret = "1";
var nodes = "http://localhost:5000";
//new一個client例項
var configClient = new ConfigClient(appId, secret, nodes);
//使用AddAgileConfig配置一個新的IConfigurationSource
cfg.AddAgileConfig(configClient);
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup