本文已参与「新人创作礼」活动,一起开启掘金创作之路
一、AgileConfig
AgileConfig是一个基于 .net core开发的轻量级配置中心。AgileConfig秉承轻量化的特点,部署简单、配置简单、使用简单、学习简单,它只提取了必要的一些功能,并没有像Apollo那样复杂且庞大。但是它的功能也已经足够替换webconfig,appsettings.json这些文件了。有关配置中心的基础概念可以看【微服务配置中心的基本概念_胖太乙的博客-CSDN博客】
文档地址
Git地址:github.com/kklldog/Agi…
Gitee地址:gitee.com/kklldog/Agi…
测试源码下载
download.csdn.net/download/IT…https://download.csdn.net/download/IT_rookie_newbie/85452896
特点
- 部署简单,最少只需要一个数据节点,支持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、将存有数据库的节点宕机,测试是否依旧可以访问。