架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 11165|回复: 1

[资料] 【架构篇】ASP.NET Core 基于 Consul 动态配置热更新

[复制链接]
发表于 2020-10-16 18:25:34 | 显示全部楼层 |阅读模式
ASP.NET Core 实现微服务,必须要解决配置中心的问题 。不管是不是微服务,节点多了配置文件一个个更改非常麻烦,今天分享一个基于Consul 实现轻量级的配置中心方案。无需重新网站,就实现了配置文件的热更新。

背景

通常,.Net 应用程序中的配置存储在配置文件中,例如 App.config、Web.config 或 appsettings.json。从 ASP.Net Core 开始,出现了一个新的可扩展配置框架,它允许将配置存储在配置文件之外,并从命令行、环境变量等等中检索它们。

在传统项目中,修改配置文件,需要登录生产环境进行修改,当项目多的时候,不便于维护和管理。

因此我们通过Consul在线实时配置,则达到了只更改配置不重启服务即可实时响应的目的。实现思路基于Consul的Key/value ,多个Consul 节点之间可以自动同步配置,我们的程序中就是实现ConfigurationProvider,监听Consul变化。

Consul 配置

关于 下载安装,可以参考:

【架构篇】.net/c# 基于 Consul 实现分布式配置之Key/Value存储
https://www.itsvse.com/thread-9420-1-1.html

ASP.NET Core 配置

首先,安装nuget包,命令如下:



修改 Program.cs 文件,代码如下:



关于 Configuration 更多配置,可以参考:

https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/configuration/?view=aspnetcore-3.1

配置 Consul 服务中心地址,修改 appsettings.json 文件,配置如下:



控制器代码如下:



启动项目,如下图:

86b219f2-5d07-4b3a-87f5-00d1972d28b9.png

078c9498-3cf0-4d78-80c6-4303aec0ca1b.png

由于,我们 Consul 并没有在配置 test 的值,所以获取为空。

打开 http://127.0.0.1:8500/ui/dc1/kv 配置项目所需要的文件。

项目读取的配置文件地址为:

“/WebApplication1/appsettings.Development.json”

因此,我们需要新建“WebApplication1”文件夹和“appsettings.Development.json”文件,如下图:

bf7c9a51-95b2-403b-bcee-498b26e8e52a.png

Value 如下:



保存后,我们重新刷新网站,如下图:

1e5042bc-ab45-41a8-af53-1e52ee2a5224.png

测试中文字符,也没有任何问题,如下图:

0721b668-8054-43d2-bb5c-dc958a225629.png

可以看到,成功获取到了test的值,这就实现了动态配置功能,无需重启网站,就实现了配置文件的热更新。




上一篇:【架构篇】.net/c# 基于 Consul 实现分布式配置之Key/Value存储
下一篇:【架构篇】ASP.NET Core 基于 Consul 之服务高可用
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2022-1-5 14:42:56 | 显示全部楼层
学习学习
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-3-29 04:36

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表