首页 > 其他分享 >微服务 配置中心 Nacos .Net 5

微服务 配置中心 Nacos .Net 5

时间:2023-05-16 22:06:19浏览次数:40  
标签:配置 Nacos nacos key Net configuration Docker


微服务配置中心 Nacos .Net 5

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

环境如何搭建

它的环境相对还是比较复杂的,需要有Docker服务和测试的Demo服务,以及它还需要相应的Mysql数据库:
1.Docker 提供Nacos服务
2. WebDemo
3. Mysql需要的指定数据库

获取官网的表结构

c#的官方示例地址是:https://github.com/nacos-group/nacos-sdk-csharp
官方提供的地址在这里 :https://github.com/alibaba/nacos.git
sql 会在 nacos\distribution\conf\nacos-mysql.sql

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

微服务 配置中心 Nacos .Net 5_.NET CORE


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

最后看到会有以下这些表

微服务 配置中心 Nacos .Net 5_.NET CORE_02

启动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 地址

微服务 配置中心 Nacos .Net 5_.net_03


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

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

增加相应的配置信息

微服务 配置中心 Nacos .Net 5_docker_04

  1. 第一,就是我们要增加的配置菜单
  2. 第二,就是相应的命名空间
  3. 第三,就是需要的具体的配置

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

微服务 配置中心 Nacos .Net 5_微服务_05


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

微服务 配置中心 Nacos .Net 5_.NET CORE_06


微服务 配置中心 Nacos .Net 5_.net_07

新建一个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 地址如下

微服务 配置中心 Nacos .Net 5_.net_08


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

微服务 配置中心 Nacos .Net 5_docker_09


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

微服务 配置中心 Nacos .Net 5_docker_10


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

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

微服务 配置中心 Nacos .Net 5_微服务_11


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

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

微服务 配置中心 Nacos .Net 5_docker_12


微服务 配置中心 Nacos .Net 5_docker_13


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

最后奉上github地址

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


标签:配置,Nacos,nacos,key,Net,configuration,Docker
From: https://blog.51cto.com/kesshei/6287422

相关文章

  • .Net 5 CanalSharp Mysql CDC (增量同步,捕获变更数据)Docker 系列之 Canal (CDC 增量
    CanalSharp阿里云的解决方案,需要两部分Canal 服务端要和Mysql连在一起(目前我是用docker部署的服务)另外一部分就是CanalSharp单独的客户端服务(.Net5服务)CanalSharp文档可以参考:https://canalsharp.azurewebsites.net/zh/安装服务,可以点击下边的连接。Docker系列之Canal......
  • 手把手教你Tomcat配置环境变量以及验证方法
    场景现在要将Tomcat配置进环境变量。实现以win7为例,找到桌面计算机图表,右键属性。或者打开计算机,找到系统属性。然后找到高级系统设置找到环境变量点击系统变量下的新建找到Tomcat所在目录变量名为:CATALINA_BASE内容为Tomcat所在路径,这里是上面的路径如图:点击确定同理再新建系统变......
  • .Net Core 实现WebSocket Server 的另外三种方式
    回顾之前已经写过关于《WebSocket原生socket实现》和《.NetCoreWebSocket服务端与客户端完整示例》以及《基于.NetTcpListener实现WebSocketServer通讯》。其中除了《.NetCoreWebSocket服务端与客户端完整示例》外,都是基于自己对Websocket协议的实现,这种实现在生产环境......
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
    之前业务需要捕捉到业务数据增量部分,并对其进行宽表处理,这也是其中的一个技术方案,方案主要是用了CDC的技术。CDC全称是ChangeDataCapture,捕获变更数据,是一个比较广泛的概念,只要是能够捕获所有数据的变化,比如数据库捕获完整的变更日志记录增、删、改等,都可以称为CDC。该功能被......
  • ListNet和ListMLE
    背景ListNet和ListMLE都是listwise的排序方法 ListNetListNet用如下公式表示一种排列的概率:举个例子:假设有3个doc<doc1,doc2,doc3>,对应的score为<s1,s2,s3>,那么对于这样一种排列<s2,s3,s1>,其概率为:这样,得到排列的概率分布后,我们就可以用交叉熵来计算loss了: ......
  • django系列-服务和环境配置(陆续完善中···)
    一、Mysql1、安装服务端yuminstallmariadb-server-ymariadb-server.x86_641:5.5.68-1.el7#版本2、安装客户端yuminstallmariadb-y#软件包1:mariadb-5.5.68-1.el7.x86_64已安装并且是最新版本3、服务配置4、帐号初始化二、Redis三、Python四、虚拟环境......
  • resin的配置优化
    下载resin源码包:resin-3.0.18.tar.gz [path]#cpresin-3.0.18.tar.gz/usr/local/ [path]#cd/usr/local/ [path]#tar-zxvfresin-3.0.18.tar.gz [path]#cdresin-3.0.18 [path]#./configure–prefix=/usr/local/resin --with-apxs=/usr/local/apache2/bin/a......
  • resin 数据连接 配置 转
    Resin对数据库缓冲池的支持很好。在这里,它提供了DBPool对缓冲池做了封装。实际使用时,只要在resin.conf这样配置:<dbpool.sql><id>ORCL</id><driver>oracle.jdbc.driver.OracleDriver</driver><url>jdbc:oracle:thin:@localhost:1521:SMTH</url><!--......
  • idea配置Tomcat出现Warning: No artifacts configured 解决方法
    报错的截图解决方法 完成后启动 成功!!!!!!!!!!!!!......
  • Ext.Net-----GridPanel (属性|方法|配置|详细介绍)
    1、Ext.NET----GridPanel 主要配置项: store:表格的数据集 columns:表格列模式的配置数组,可自动创建ColumnModel列模式 autoExpandColumn:自动充满表格未用空间的列,参数为列id,该id不能为0 stripeRows:表格是否隔行换色,默认为false cm、colModel:表格的列模式,渲染表格时必须设置......