由于之前项目维护的时候有多个API服务,发布时候又做了高可用多主机均衡负载,环境又有多套,当部署新代码的时候如果有新增配置项需要修改N个环境和服务器实属折磨人
我们知道每个.net core中都有一个appsettings.json的配置文件,由于之前项目有3个环境,一共有4台主机,每个主机下面又有4个服务,
如果修改内容多的时候,所有服务都要更新并修改配置文件,一共要改16(4台主机每台4个服务)个配置文件,维护起来太难受了
所想着改造一波,因为目前微服务中也提及了很多注册中心和配置中心(Apollo 或者Nacos) 但是官方都没有明面表示支持Postgres,因为公司项目使用的Postgres
这里最后采用了AgileConfig轻量配置中心 如果使用配置中心后架构就如下所示了
到时候不管重新部署还是更新配置项目就很简单
我们只需要将DEV环境的配置项目修改将新增配置项同步到其他环境即可
这里我们将常用数据库连接,redis连接等新建了一个Common类,其他四个服务的配置项目关联common类,那么第一次部署后,同步common配置,将内容修改为当前环境的内容后就不会去同步和修改common类了
然后每次有新增就去同步每个服务私有的配置项内容
引入配置中心,就只需要再代码中添加如下代码
1.修改appsetting.json
"AgileConfig": { "appId": "xsw_webapi", "secret": "webapi", "nodes": "http://114.117.168.70:5000", //配置中心的地址 "name": "xsw_webapi", "tag": "webapi", "env": "DEV", "serviceRegister": { //服务注册信息,如果不配置该节点,则不会启动任何跟服务注册相关的服务 可选 "serviceId": "test_webpapi", //服务id,全局唯一,用来唯一标示某个服务 "serviceName": "test_webpapi_01", //服务名,可以重复,某个服务多实例部署的时候这个serviceName就可以重复 "ip": "127.0.0.1", //服务的ip "port": 8004, //服务的端口 "metaData": [ //携带服务的其他元数据 可选 "2023-09-08" ] } }
然后再Programe配置项内添加
.ConfigureAppConfiguration((hostingContext, config) =>//指定应用的配置提供程序 { var configClient = new ConfigClient(); //使用AddAgileConfig配置一个新的IConfigurationSource config.AddAgileConfig(configClient); })
因为项目里使用了服务发现所所以
在Startup中也添加了发现和注册
services.AddAgileConfig();
最后运行API就能依托配置中心来管理配置文件了,其他API的服务修改方式和此一样,只是需要将appsettings.json中的appid和appsecret换成对应的内容
标签:webapi,core,服务,配置文件,配置,修改,net,轻量,AgileConfig From: https://www.cnblogs.com/JockMary/p/17689741.html