微服务 配置中心 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.png 406e02c32a4e70052c61ca16f3cacc76.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.png 310a858bd616374b495b9c2d9e01b0c5.png

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

6. 最后奉上github地址

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值