雙11那天離職後,這段時間都待在家裏,看看書,寫寫代碼,逛逛招聘網站html
週一去Gworld面試的時候,有聽到面試官說他們用到了配置中心Apollo,聊下來,聽他的意思,大概是處理了多環境這個比較方便。git
因而乎就有了這篇短文,來簡單談談Nacos作爲配置中心時,怎麼應對多環境的問題。github
如今比較流行的配置中心,說來講去,聽的比較多的也就下面幾個:面試
嚴格意義上說,只要是支持KV的,均可以作爲配置中心來耍,看你對它的需求有多少。json
下面就來簡單看看用Nacos來作配置中心的多環境問題。app
當咱們全部的環境都共用一套配置中心的時候,最讓咱們苦惱的問題應該是要怎麼樣去隔離這些不一樣的環境!微服務
在Nacos中,推薦的作法是用NameSpace來區分。網站
首先要爲每一個環境建一個命名空間,用做區分的標識。ui
能夠考慮用應用名.環境名
的形式,只要統一就好。spa
爲了演示,往每一個命名空間都加一個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文件的中間那部分一致了。固然也能夠從環境變量中指定,方式不少,你們隨便選。
下面是在三個不一樣環境,讀出來不一樣的配置內容。
其實到這一步,咱們已經在同一個配置中內心面,將應用的不一樣環境隔離開了。
本文的示例代碼: