• ASP.NET Core使用Nacos作为配置中心的多环境问题


    前言

    双11那天离职后,这段时间都待在家里,看看书,写写代码,逛逛招聘网站

    周一去Gworld面试的时候,有听到面试官说他们用到了配置中心Apollo,聊下来,听他的意思,大概是处理了多环境这个比较方便。

    于是乎就有了这篇短文,来简单谈谈Nacos做为配置中心时,怎么应对多环境的问题。

    现在比较流行的配置中心,说来说去,听的比较多的也就下面几个:

    • Apollo
    • Spring Config
    • Nacos
    • consul
    • etcd

    严格意义上说,只要是支持KV的,都可以做为配置中心来耍,看你对它的需求有多少。

    下面就来简单看看用Nacos来做配置中心的多环境问题。

    多环境问题

    当我们所有的环境都共用一套配置中心的时候,最让我们苦恼的问题应该是要怎么样去隔离这些不同的环境!

    在Nacos中,推荐的做法是用NameSpace来区分。

    首先要为每个环境建一个命名空间,用作区分的标识。

    可以考虑用应用名.环境名的形式,只要统一就好。

    为了演示,往每个命名空间都加一个test的配置,对应的值是环境名。

    下面要做的就是在不同环境的配置文件中指定对应的命名空间,这里要用那个命名空间ID

    调整配置文件如下:

    然后在Startup中直接读取。

    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }
    
        public IConfiguration Configuration { get; }
    
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddNacos(Configuration);
    
            services.AddControllers();
        }
    
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            var nacosConfigClient = app.ApplicationServices.GetRequiredService<Nacos.INacosConfigClient>();
    
            var val = nacosConfigClient.GetConfigAsync(new Nacos.GetConfigRequest
            {
                 DataId = "test"
            }).GetAwaiter().GetResult();
    
            Console.WriteLine($"==={env.EnvironmentName}==={val}===");
    
            // ....
        }
    }
    

    由于这里是不同环境不同的配置文件,在启动命令上面指定环境即可。

    dotnet xxx.dll --environment=Test
    

    这里的环境就要和json文件的中间那部分一致了。当然也可以从环境变量中指定,方式很多,大家随便选。

    下面是在三个不同环境,读出来不同的配置内容。

    其实到这一步,我们已经在同一个配置中心里面,将应用的不同环境隔离开了。

    本文的示例代码:

    NacosConfigSample

    参考资料

  • 相关阅读:
    福大软工1816 · 第五次作业
    福大软工1816 · 第四次作业
    第三次作业
    福大软工1816 · 第二次作业
    培养孩子应知的30个细节
    人力资源六大模块
    中小学班主任工作规定
    事业单位笔试题
    班级管理
    Leetcode 7 反转整数
  • 原文地址:https://www.cnblogs.com/catcher1994/p/11906556.html
Copyright © 2020-2023  润新知