一、AgileConfig
AgileConfig是一个基于.net core开发的轻量级配置中心。AgileConfig秉承轻量化的特点,部署简单、配置简单、使用简单、学习简单,它只提取了必要的一些功能,并没有像Apollo那样复杂且庞大。但是它的功能也已经足够替换webconfig,appsettings.json这些文件了。有关配置中心的基础概念可以看【微服务配置中心的基本概念_胖太乙的博客-CSDN博客】
文档地址
Git地址:https://github.com/kklldog/AgileConfig
Gitee地址:https://gitee.com/kklldog/AgileConfig
测试源码下载
特点
-
部署简单,最少只需要一个数据节点,支持docker部署
-
支持多节点分布式部署来保证高可用
-
配置支持按应用隔离,应用内配置支持分组隔离
-
支持多环境
-
应用支持继承,可以把公共配置提取到一个应用然后其它应用继承它
-
使用长连接技术,配置信息实时推送至客户端
-
支持IConfiguration,IOptions模式读取配置,原程序几乎可以不用改造
-
配置修改支持版本记录,随时回滚配置
-
如果所有节点都故障,客户端支持从本地缓存读取配置
-
支持Restful API维护配置
数据库支持
目前支持 sqlserver,mysql,sqlite, PostgreSql,Oracle 五种数据库
二、环境搭建
1、前置环境准备
- 本测试基于CentOS 7.9
-
需要有基础的Docker 环境
- 不知道如何安装的请看 【二、Linux 下安装Docker图解教程_胖太乙的博客-CSDN博客_linux怎么装docker】
2、安装数据库
AgileConfig 需要有一个数据库环境, 并且需要将库建好。所以接下来我们就需要使用Docker 拉取一个mysql 数据库, 并且运行起来。
# 拉取mysql 数据库并运行
docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
- -p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务。
- MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的密码。
3、安装AgileConfig
docker run \
--name agile_config \
-e adminConsole=true \
-e db:provider=mysql \
-e db:conn="Data Source=@ip;Database=AgileConfigDB;User ID=root;Password=123456;pooling=true;port=3306;sslmode=none;CharSet=utf8;allowPublicKeyRetrieval=true;" \
-p 5000:5000 \
-v /etc/localtime:/etc/localtime \
-d kklldog/agile_config:latest
-
adminConsole 配置程序是否为管理控制台。如果为true则启用控制台功能,访问该实例会出现管理界面。
-
db:provider 配置程序的数据库类型。目前程序支持:sqlserver,mysql,sqlite, PostgreSql,Oracle 五种数据库。
-
db:conn 配置数据库连接串
运行完毕之后, 就可以使用 http:// ip:5000 的方式去访问控制台了。
三、测试
1、需要再项目用引用 nuget包,AgileConfig.Client
2、在appsettings.json中增加配置,多个节点使用逗号分隔
"AgileConfig": {
"appId": "WCS",
"secret": "123456",
"nodes": "http://XXXX:5000,http://XXXX:5000,http://XXXX:5000"
}
3、在 Program.cs 中增加节点信息配置 “config.AddAgileConfig();”
4、读取配置中心服务器上的配置文件
四、测试单点故障
1、将其中一台服务器 “宕机” , 测试及配置是否依旧可以访问。
2、将存有数据库的节点宕机,测试是否依旧可以访问。