微服务 配置中心 Nacos .Net 5

本文来自投稿:蓝创精英团队

基于Nacos来一篇关于微服务的配置中心方案Demo。

Nacos是开源的,同时,阿里云也有收费的关于它的服务,公司刚好是依托阿里云的服务体系,所以,使用它作为配置中心的可能性还是很大的,所以,基于它,来了一个示例。

1. 环境如何搭建

它的环境相对还是比较复杂的,需要有Docker服务和测试的Demo服务,以及它还需要相应的Mysql数据库:

  1. Docker 提供Nacos服务

  2. WebDemo

  3. Mysql需要的指定数据库

2. 获取官网的表结构

C#的官方示例地址是:https://github.com/nacos-group/nacos-sdk-csharp

官方提供的地址在这里 :https://github.com/alibaba/nacos.git

SQL 会在 nacos\distribution\conf\nacos-mysql.sql

我这边项目里会提供需要的sql。

484aa1db5c09a598d3aed1a3a6693ac3.png

我这边插入指定的脚本,就OK,前提是你要有这个库。

最后看到会有以下这些表

3c4b1989bb4dad07dfa8157f2781a8ba.png

3. 启动Docker服务

我这边默认是使用Docker Desktop,直接输入命令就搞定了。

如果你也使用这种Docker,那么,你可以参考我之前关于Docker相关的文章即可.

docker run --name nacos  -d -p 8848:8848 ^
-e MODE=standalone ^
-e MYSQL_SERVICE_HOST=192.168.1.8 ^
-e MYSQL_SERVICE_DB_NAME=nacos_config ^
-e MYSQL_SERVICE_PORT=3306 ^
-e MYSQL_SERVICE_USER=root ^
-e MYSQL_SERVICE_PASSWORD=123456 ^
nacos/nacos-server

如何判断服务是否OK

可以游览器访问   http://localhost:8848/nacos/#/login 地址

42b9aea1d16ed7352a16631c5a7b1e28.png

这样的话,我们就可以登录平台上看看有啥子了

初始的用户名和密码都是 nacos

4. 增加相应的配置信息

084e6db09c35da227c1352bf76b320f0.png
  1. 第一,就是我们要增加的配置菜单

  2. 第二,就是相应的命名空间

  3. 第三,就是需要的具体的配置

其中我新增了一个Test的命名空间

2119e642b80af9751814ff5693c11fb0.png

然后,在每个里面增加了两个配置如下

62f86f9f48b88d28a39497b996846448.png406e02c32a4e70052c61ca16f3cacc76.png

5. 新建一个WebAPi项目

新建一个默认的webapi项目,然后引入以下nuget包即可

nacos-sdk-csharp.AspNetCore

另外需要修改默认Program这个地方为以下配置

public static IHostBuilder CreateHostBuilder(string[] args) =>Host.CreateDefaultBuilder(args).ConfigureWebHostDefaults(webBuilder =>{webBuilder.UseStartup<Startup>();}).ConfigureAppConfiguration((context, builder) =>{var c = builder.Build();// read configuration from config files// it will use default json parser to parse the configuration store in nacos server.builder.AddNacosV2Configuration(c.GetSection("NacosConfig"));// you also can specify ini or yaml parser as well.// builder.AddNacosV2Configuration(c.GetSection("NacosConfig"), Nacos.IniParser.IniConfigurationStringParser.Instance);// builder.AddNacosV2Configuration(c.GetSection("NacosConfig"), Nacos.YamlParser.YamlConfigurationStringParser.Instance);});

还需要注意的就是 最重要的配置文件(appsettings.json)了如下:

{"Logging": {"LogLevel": {"Default": "Information","Microsoft": "Warning","Microsoft.Hosting.Lifetime": "Information"}},"AllowedHosts": "*","NacosConfig": {"Listeners": [{"Optional": false,"DataId": "conn","Group": "DEFAULT_GROUP"},{"Optional": false,"DataId": "other","Group": "DEFAULT_GROUP"}],"Tenant": "1806893a-7997-4657-9325-d4294fbf0f4a","ServerAddresses": [ "http://192.168.1.8:8848/" ],"UserName": "nacos","Password": "nacos","ConfigUseRpc": false,"NamingUseRpc": false}
}

其中 Tenant为指定配置中心命名空间的ID,另外就是Listeners的是这个命名空间下的配置的Data Id。

必须要有 ConfigUseRpc和NamingUseRpc这2个参数,若用的是http协议,则都是false ,若用grpc协议则为true.(不写会报错)

为了增加演示效果,我这里修改了默认的控制器方法为读取指定的配置

private readonly IConfiguration _configuration;
public HomeController(ILogger<HomeController> logger, IConfiguration configuration)
{_logger = logger;_configuration = configuration;
}public IActionResult Index(string key)
{if (string.IsNullOrWhiteSpace(key)){return Content("key is empty!");}return Content(_configuration[key]);
}

启动后效果

访问 http://localhost:38889/home?key=mysql 地址如下

d2410902f1ebfbca7ab994a038e8e251.png

访问 http://localhost:38889/home?key=other 地址如下

aac9b77017af9f02d63c26a6d92b1f91.png

访问 http://localhost:38889/home?key=redis 地址如下

7276c3feca8841142cf37abb26164adb.png

可见已经能全部查到相应的配置信息了

这个时候,我动态修改 Nacos上的配置信息

ce2895d3985ccd0838352edbec42706a.png

然后,在查询一下看看是不是最新的

发现已经是最新的,并且,控制台也直接更新为最新的配置了

e5ec51d4d0f526a700812d09298d7a8d.png310a858bd616374b495b9c2d9e01b0c5.png

可见这个配置中心也挺好用的

6. 最后奉上github地址

  • github :https://github.com/kesshei/NacosConfigDemo.git

  • gitee : https://gitee.com/kesshei/NacosConfigDemo.git

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/287259.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Pix4d精品教程】安装Pix4Dmapper时提示“无法启动此程序,因为计算机中丢失api-ms-win-crt-runtime-l1-1-0.dll”完全解决办法

Pix4Dmapper系列文章合集: 打开Pix4DMapper时提示Pix4DMapper.exe已停止工作的完全解决办法 Pix4DMapper图文安装教程(附安装包下载) Pix4Dmapper完整航测内业操作流程手把手图文教程 目 录 一、问题描述 二、问题分析 三、解决办法

看聊天记录都学不会C语言?太菜了吧》(17)5分钟搞懂指针与多重指针

若是大一学子或者是真心想学习刚入门的小伙伴可以私聊我&#xff0c;若你是真心学习可以送你书籍&#xff0c;指导你学习&#xff0c;给予你目标方向的学习路线&#xff0c;无套路&#xff0c;博客为证。 本系列文章将会以通俗易懂的对话方式进行教学&#xff0c;对话中将涵盖…

如何保护你的linux操作系统

导读在现在这个世道中&#xff0c;Linux操作系统的安全是十分重要的。但是&#xff0c;你得知道怎么干。一个简单反恶意程序软件是远远不够的&#xff0c;你需要采取其它措施来协同工作。那么试试下面这些手段吧。 使用SELinuxSELinux是用来对Linux进行安全加固的&#xff0c;有…

Android之使用ACTION_USAGE_ACCESS_SETTINGS权限检测手机多少天没有未使用其它APP

1 需求 找出手机多少天没有使用的所有APP 2 思路 通过 ACTION_USAGE_ACCESS_SETTINGS权限得到多少天已经使用的APP的包名,然后获取手机所有用户APP,剩下的APP就是多少天没有使用的APP。 3 ACTION_USAGE_ACCESS_SETTINGS权限申请 1)在AndroidManifest.xml文件里面定义权限…

无人职守安装的设计与部署

无人职守安装的设计与部署 (2009-2-19) 安装前需要生成一个应答文件&#xff0c;此时需要一个光盘中的工具。首先&#xff0c;将WINDOWN2003光盘载入CD&#xff0c;---单击退出。接下来打开光盘&#xff0c; 选择SUPPORT—并打开&#xff0c; --TOOLS –并打开 -----…

【Pix4d精品教程】Pix4dmapper航测内业项目化数据处理完整流程(空三、生成点云、DOM和DSM)

Pix4dmapper是一款集全自动、快速、专业精度为一体的无人机数据和航空影像数据处理软件。无需专业知识,无需人工干预,即可将数千张影像快速制作成专业的、精确的二维地图和三维模型。 本文讲解采用Pix4dmapper摄影测量内业数据处理完整流程,主要步骤包括:新建项目、添加影像…

干掉RedisHelper,请这样用分布式缓存

前言我们在项目中使用Redis时通常是写一个单例模式的RedisHelper静态类&#xff0c;暴露一些常用的Get、Set等操作&#xff0c;在需要使用地方直接RedisHelper.StringGet(xx,xx)就可以了&#xff0c;这样虽然简单粗暴地满足我们对Redis的所有操作需要&#xff0c;但是这在Asp.N…

4个常用的awk统计命令

1、求和cat data|awk {sum$1} END {print "Sum ", sum}2、求平均cat data|awk {sum$1} END {print "Average ", sum/NR}3、求最大值cat data|awk BEGIN {max 0} {if ($1>max) max$1 fi} END {print "Max", max}4、求最小值&#xff08;min…

《看聊天记录都学不会C#?太菜了吧》(2)C#那么简单我为何之前还学C语言?

本系列文章将会以通俗易懂的对话方式进行教学&#xff0c;对话中将涵盖了新手在学习中的一般问题。此系列将会持续更新&#xff0c;包括别的语言以及实战都将使用对话的方式进行教学&#xff0c;基础编程语言教学适用于零基础小白&#xff0c;之后实战课程也将会逐步更新。 若…

Android之java.lang.ClassCastException: *****cannot be cast to*******

1 问题 在写BaseMultiItemQuickAdapter适配器的时候&#xff0c;更具不同类型构建不同的实体对象&#xff0c;提示错误如下 2 原因 Overrideprotected void convert(BaseViewHolder helper, MultiItemEntity item) {switch (helper.getItemViewType()) {case AppCleanHead.app…

php函数的初步使用

通过调用函数&#xff0c;实现打印半金字塔、全金字塔、空心金字塔、菱形、空心菱形 调用例程 huaTuMain.php被调用函数 huaTu.php转载于:https://www.cnblogs.com/seaBiscuit0922/p/5613141.html

ORACLE 11G DATA GUARD主从切换

当oracle data guard中如主库出现当机时,需要将从库切换为主库,以下从实验环境模拟主从库切换操作:1.查看主从库角色192.168.88.120:192.168.88.119:2.将主库(88.120)切换为从库alter database commit to switchover to physical standby with sessionB shutdown;shutdown im…

【Pix4d精品教程】大疆精灵4A无人机航空摄影测量外业数据采集完整操作流程

本项目我们采用大疆精灵4A无人机进行航空摄影测量外业数据采集,主要内容包括:航摄准备、像控点布设、航线规划、飞行、数据传输等。 Pix4dmapper摄影测量内业数据处理、空三及4D产品生产部分,请参照文章:《Pix4dmapper摄影测量内业数据处理完整流程》 目录 一、航摄准备 …

oracle进程结构中完成更新,Oracle 进程结构

Oracle进程结构进程是动态创建的&#xff0c;完成任务后就消亡&#xff1b;而程序是静态的实体&#xff0c;程序是可以复制、编辑的。进程强调的是执行过程&#xff0c;而程序仅仅是指令的有序集合&#xff1b;进程在内存中&#xff0c;程序在外存中。ORACLE分为用户进程和ORAC…

国外设计师眼中的原型工具Mockplus

2019独角兽企业重金招聘Python工程师标准>>> 今天&#xff0c;我们评述一款新型设计工具&#xff0c;Mockplus&#xff0c;专为设计师而打造的创新性原型设计工具。Mockplus适合于各种应用软件的制作&#xff0c;无论是手机应用&#xff0c;网页应用&#xff0c;亦或…

《看聊天记录都学不会C#?太菜了吧》(1)从今天开始我是一个游戏开发者

本系列文章将会以通俗易懂的对话方式进行教学&#xff0c;对话中将涵盖了新手在学习中的一般问题。此系列将会持续更新&#xff0c;包括别的语言以及实战都将使用对话的方式进行教学&#xff0c;基础编程语言教学适用于零基础小白&#xff0c;之后实战课程也将会逐步更新。 若…

Android之让EditText不被键盘挡住

1 问题 点击EditText的时候&#xff0c;键盘挡住了&#xff0c;不好输入内容 2 解决办法 在AndroidManifest.xml相应的activity里面添加 android:windowSoftInputMode"adjustPan|stateHidden"

如何定制.NET6.0的日志记录

在本章中&#xff0c;也就是整个系列的第一部分将介绍如何定制日志记录(系列内容查阅《玩转ASP.NET 6.0框架-序言》)。默认日志记录仅写入控制台或调试窗口&#xff0c;这在大多数情况下都很好&#xff0c;但有时需要写入到文件或数据库&#xff0c;或者&#xff0c;您可能希望…

FreeMarker标签介绍

转自&#xff1a;http://www.blogjava.net/kxbin/articles/366505.html FreeMarker标签使用 一、FreeMarker模板文件主要有4个部分组成 1、文本&#xff0c;直接输出的部分 2、注释&#xff0c;即<#--...-->格式不会输出 3、插值&#xff08;Interpolation&#xff09…

利用Erdas监督分类方法提取城镇用地信息完整实验操作步骤

打开erdas,分波段加载landsat TM 影像信息,并转成img图像格式文件。 1.打开erdas,点击viewer打开新窗口,点击打开图标,选择要加载的一个波段的tif图像,点击OK。 2.点击主窗口File——Save——Top Layer As…,在跳出的Save窗