公司要做c# .netcore 微服务架构,就想到了用nacos作为微服务注册中心来管理微服务配置文件nacos是一个易于构建云原生应用的动态服务发现、配置管理和服务管理平台,它提供了一组简单易用的特性集,帮助我们快速实现动态服务发现、服务配置、服务元数据及流量管理。

Ps:Nacos服务除了 8848 端口要开启外,还需要一并开放 9848、9849 不然配置读取会失败。如果是docker容器化部署也是需要将这几个端口一并映射出来

安装Nacos包

Install-Package nacos-sdk-csharp -Version 1.3.2
Install-Package nacos-sdk-csharp.AspNetCore -Version 1.3.2
Install-Package nacos-sdk-csharp.Extensions.Configuration -Version 1.3.2
Install-Package nacos-sdk-csharp.IniParser -Version 1.3.2
Install-Package nacos-sdk-csharp.YamlParser -Version 1.3.2

加入Nacos配置

appsettings.json 文件中加入如下节点;

//读取配置中心配置
  "NacosConfig": {
    "Listeners": [
      {
        "Optional": false,
        //配置名称
        "DataId": "arg-cscomm-dev",
        //配置组名
        "Group": "DEV_GROUP"
      }
    ],
    //租户名称,一般与服务名一致
    "Tenant": "ia-csuser",
    //所属命名空间id
    "Namespace": "ia-arg-dev",
    "ServerAddresses": ["http://192.168.200.50:8848/"],
    "UserName": "nacos",
    "Password": "nacos",
    "ConfigUseRpc": true,
    "NamingUseRpc": true
  },
  //Nacos服务注册发现配置
  "nacos": {
    "ServerAddresses": ["http://192.168.200.50:8848/"],
    "DefaultTimeOut": 15000,
    //所属命名空间id
    "Namespace": "ia-arg-dev",
    //nacos登录用户
    "UserName": "nacos",
    //nacos登录密码
    "Password": "nacos",
    "ListenInterval": 1000,
    //当前服务注册名称
    "ServiceName": "ia-csuser",
    //服务权重
    "Weight": 100,
    "ConfigUseRpc": true,
    "NamingUseRpc": true
  }

读取远程配置

Program.cs 文件中注入nacos配置服务,即可读取配置中心对应配置。

public class Program
    {
        public static void Main(string[] args)
        {
            try
            {
                CreateWebHostBuilder(args).Build().Run();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }

        public static IHostBuilder CreateWebHostBuilder(string[] args)
        {
            return Host.CreateDefaultBuilder(args)
                  .ConfigureWebHostDefaults(builder =>
                  {
                      builder.ConfigureAppConfiguration((env, config) =>
                      {
                          var c = config.Build();
                          config.SetBasePath(env.HostingEnvironment.ContentRootPath);
                          config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
                          config.AddEnvironmentVariables();
                          //注入Nacos配置中心服务,用于读取远程配置
                          config.AddNacosV2Configuration(c.GetSection("NacosConfig"));
                      })
                       .UseStartup<Startup>();
                  });
        }
    }

注入Nacos服务

Startup.cs文件 ConfigureServices 方法中加入如下代码,即可完成nacos服务注入

public Startup(IConfiguration configuration)
 {
     Configuration = configuration;
 }
public IConfiguration Configuration { get; }

public void ConfigureServices(IServiceCollection services)
 {
     //注入Nacos服务
     services.AddNacosAspNet(Configuration);
     //注入微服务互调
     services.AddNacosV2Naming(Configuration);
 }
最后修改:2022 年 11 月 08 日
如果觉得我的文章对你有用,请随意赞赏