.net core使用Apollo做統一配置管理
做開發這麽多年,經常因配置的問題引發生產環境的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做統一配置管理