1. 程式人生 > >.net core使用Apollo做統一配置管理

.net core使用Apollo做統一配置管理

AR github serve nuget eap apps 技術 etsec rgs

做開發這麽多年,經常因配置的問題引發生產環境的bug。有些年久的項目,幾百個密密麻麻的配置項,經常容易搞混,有時好幾個項目有好多同樣的配置項,配置工作也不厭其煩。所幸,攜程開源了新一代配置中心 - Apollo項目,最近在項目中使用了一段時間,感覺確實方便不少。

首先本地搭建Apollo,請參照官網資料https://github.com/ctripcorp/apollo/wiki/Quick-Start。

進入Apollo的管理UI,創建項目:

  技術分享圖片

創建項目後,就可以在項目中添加Key、value了:

  技術分享圖片

添加key後,需要發布才能生效。

在.net core項目中添加Com.Ctrip.Framework.Apollo.Configuration的nuget包(難道是java程序員寫的?),修改Program.cs文件及appsettings.json文件,appsettings.json文件的AppId對應上文中的應用ID,MetaServer的地址Apollo的Euraka的Server地址:

  

        public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .ConfigureAppConfiguration((hostingContext, builder) 
=> { builder .AddApollo(builder.Build().GetSection("apollo")) .AddDefault(); }) .UseStartup<Startup>() .Build();
{
  "apollo": {
    "AppId": "SampleApp",
    "MetaServer": "http://192.168.2.168:8080"
  }
}


這樣就可以在項目中讀取apollo裏的配置項了,是不是很簡單。

如果有一些公共配置項需要被幾個項目引用,該怎麽辦呢?NameSpace閃亮登場!傳送門:Apollo核心概念之“Namespace”

  創建pulic類型的NameSpace,NameSpace的配置項對各項目都可見,唯一需要的操作是在個項目中也需要對NameSpace中的配置項進行發布,這個時候需要再改一下Program.cs的代碼:

        public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .ConfigureAppConfiguration((hostingContext, builder) =>
                {
                    builder
                    .AddApollo(builder.Build().GetSection("apollo"))
                    .AddDefault()
                    .AddNamespace("Common");//Apollo中NameSpace的名稱
                })
                .UseStartup<Startup>()
                .Build();

.net core使用Apollo做統一配置管理