AgileConfig 是一个基于.net core 开发的轻量级配置中心,秉承轻量化的特点,部署简单、配置简单、使用简单,提取了必要的一些功能,并没有像 Apollo 那样复杂且庞大。但是它的功能也已经足够替换 webconfig,appsettings.json 这些文件。
-
客户端
客户端程序是使用 netstandard2.0 开发的一个类库,方便 .net core 程序接入,nuget 搜agileconfig.client 就可以安装。可以在启动客户端的时候配置多个节点的地址,客户端会随机挑选一个进行连接,连接成功后会维持一个 websocket 长连接。如果连接的节点发生故障导致连接中断,客户端会继续随机一个节点进行连接,直到连接成功。 -
节点 管理程序
节点是使用 asp.net core 开发的一个服务。为了部署简单,直接把管理程序跟节点服务合二为一了。任何一个节点都可以在启动的时候配置环境变量开启管理程序功能。 -
数据库
使用数据库来存储数据,目前支持 Sqlserver、Mysql、Sqlite、PostgreSql、Oracle 五种数据库。
本篇使用 mysql ,数据库信息如下,初始库为空库
2、AgileConfigServer=192.168.200.123;Database=agile_configs;Uid=root;Pwd=12345678;Port=3306;Allow User Variables=True;sslMode=None;allowPublicKeyRetrieval=true
1 . 部署
这里为空方便我们使用 docker 进行部署,如下命令
docker run --name agile_config -e adminConsole=true -e db:provider=mysql -e db:conn="Server=192.168.200.123;Database=agile_configs;Uid=root;Pwd=12345678;Port=3306;Allow User Variables=True;sslMode=None;allowPublicKeyRetrieval=true;" -p 5000:5000 -v /etc/localtime:/etc/localtime -d kklldog/agile_config:latest
2. UI
容器启动成功后,浏览器访问 http://192.168.200.123:5000/ 第一次登录,会设置初始密码和用户名称
1 . 新建程序,安装客户端 AgileConfig.Client
2. 配置链接信息
//agile_config
"AgileConfig": {
"appId": "ad-api-wikifx",
"secret": "12345678",
"nodes": "http://192.168.200.123:5000", //多个节点使用逗号分隔, http://192.168.200.123:5000,http://192.168.200.123:5001
"name": "ad-api-wikifx",
"tag": "api"
}
3 . 配置 AgileConfig
.ConfigureAppConfiguration((context, config) =>
{
//default appsettings.json
config.AddAgileConfig(arg => Console.WriteLine($"config changed , action:{arg.Action} key:{arg.Key}"));
})
5 . 注册服务
services.AddAgileConfig();
6 . 查看连接
[Route("[controller]")]
[ApiController]
public class HomeController : ControllerBase
{
private readonly IConfiguration _IConfiguration;
private readonly IConfigClient _configClient;
public HomeController(IConfiguration configuration, IConfigClient configClient)
{
_IConfiguration = configuration;
_configClient = configClient;
}
[HttpGet,Route("Get")]
public IActionResult Get()
{
var ip138 = _configClient["api:ip138"];
var connectionString = _configClient["ConnectionString"];
var ip1381 = _IConfiguration["api:ip138"];
var connectionString1 = _IConfiguration["ConnectionString"];
return Ok(ip138);
}
}
答疑解惑 1、配置数据
AgileConfig 配置数据都会存储在 DB中,可以理解为平时开发的程序,数据都被持久化到 DB。



