南昌制作网站软件,山西宏图建设集团有限公司网站,观澜做网站,做建材交易网站的上市公司描述基于NetCore开发的轻量级配置中心#xff0c;部署简单、配置简单#xff0c;使用简单#xff0c;可以根据个人或者公司需求采用。部署简答#xff0c;最少只需要一个数据节点#xff0c;支持docker部署支持多节点分布式部署来保证高可用配置支持按照应用隔离#xff… 描述基于NetCore开发的轻量级配置中心部署简单、配置简单使用简单可以根据个人或者公司需求采用。部署简答最少只需要一个数据节点支持docker部署支持多节点分布式部署来保证高可用配置支持按照应用隔离应用内配置支持分组隔离使用长链接技术配置信息实时推送到客户端支持IConfiguration、IOptions模式读取配置原程序几乎不用改造配置修改支持版本记录随时回滚配置所有所有节点都故障客户端支持从本地缓存读取配置GitHub地址https://github.com/kklldog/AgileConfig 可以给这个大佬点个star如果使用apollo进行部署做配置中心对于部分公司来讲过于笨重所以我个人还是挺推荐这个的再次感谢kklldog大佬的开源项目。部署通过docker部署目前支持sqlservermysqlsqlite, PostgreSqlOracle 五种数据库。本次示例使用轻量级的sqlite作为数据存储docker run -d --name agile_config -e adminConsoletrue -e db:providersqlite -e db:connData Sourceagile_config.db -p 8011:5000 kklldog/agile_config:latest
adminConsole 配置程序是否为管理控制台。如果为true则启用控制台功能访问该实例会出现管理界面。db:provider 配置程序的数据库类型。目前程序支持sqlitemysqlsqlserver 三种数据库。db:conn 配置数据库连接串进入系统通过浏览器访问我们地址http://localhost:8011/image.png界面还是简约美观的第一次登录需要初始化管理员密码然后登录进入系统image.png通过主界面我们看到了下面这个几个菜单节点AgileConfig支持多节点部署所有的节点都是平行的。为了简化部署AgileConfig并没有单独的控制台程序请直接使用任意一个节点作为控制台。image.png应用AgileConfig支持多应用程序接入。需要为每个应用程序配置名称、ID、秘钥等信息。每个应用可以设置是否可以被继承可以被继承的应用类似apollo的公共 namespace 的概念。公共的配置可以提取到可继承应用中其它应用只要继承它就可以获得所有配置。如果子应用跟被继承应用之间的配置键发生重复子应用的配置会覆盖被继承的应用的配置。子应用可以继承多个应用如果多个应用之间发生重复键按照继承的顺序后继承的应用的配置覆盖前面的应用。image.png创建好应用后我们可以点击列表的配置该应用的配置项。image.png新添加的配置并不会被客户端感知到需要手工点击“上线”才会推送给客户端。image.png已上线的配置如果发生修改、删除、回滚操作会实时推送给客户端。版本历史记录了配置的历史信息可以回滚至任意版本。image.png客户端可以查看已经连接的客户端日志记录一些关键信息的日志创建客户端通过VS2019创建一个.Net5的WebAPI应用程序安装组件 ItemGroupPackageReference IncludeAgileConfig.Client Version1.1.8.5 //ItemGroup
连接我们的配置中心在program中进行配置 public class Program{public static IConfigClient ConfigClient;public static void Main(string[] args){CreateHostBuilder(args).Build().Run();}public static IHostBuilder CreateHostBuilder(string[] args) Host.CreateDefaultBuilder(args).ConfigureAppConfiguration((context, config) {//读取本地配置var localconfig new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile(appsettings.json).Build();//从本地配置里读取AgileConfig的相关信息var appId localconfig[AgileConfig:appId];var secret localconfig[AgileConfig:secret];var nodes localconfig[AgileConfig:nodes];//new一个client实例var configClient new ConfigClient(appId, secret, nodes);//使用AddAgileConfig配置一个新的IConfigurationSourceconfig.AddAgileConfig(configClient);//找一个变量挂载client实例以便其他地方可以直接使用实例访问配置ConfigClient configClient;//注册配置项修改事件configClient.ConfigChanged ConfigClient_ConfigChanged;}).ConfigureWebHostDefaults(webBuilder {webBuilder.UseStartupStartup();});/// summary/// 此事件会在配置项目发生新增、修改、删除的时候触发/// /summaryprivate static void ConfigClient_ConfigChanged(ConfigChangedArg obj){Console.WriteLine($action:{obj.Action} key:{obj.Key});switch (obj.Action){case ActionConst.Add:break;case ActionConst.Update:break;case ActionConst.Remove:break;default:break;}}}
appsettings添加 AgileConfig: {appId: 001,secret: 454551215781234,//密钥nodes: http://localhost:8011 //多个节点使用逗号分隔}
读取配置AgileConfig支持asp.net core 标准的IConfiguration跟IOptions模式读取配置。还支持直接通过AgileConfigClient实例直接读取。本文直接注入IConfiguration来获取刚才我们配置的数据库连接信息。在startup中获取配置image.png增加一个接口获取配置信息 private readonly IConfiguration _configuration;public HomeController(IConfiguration configuration){_configuration configuration;}[HttpGet]public string Get(){return _configuration[db:ConnectionString];}
访问接口输出配置Serverlocalhost;Databasetest;Port3306;charsetutf8;uidroot;pwd123456;在程序不关闭情况下修改配置测试一下配置是否更新image.png请求接口重新获取最近配置(不是实时更新需要等待一小会但是满足我们的实际需求)参考资料开发作者的文章https://www.cnblogs.com/kklldog/p/agile-config.htmlGitHub中文文档https://github.com/kklldog/AgileConfig/blob/master/README_CN.md