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

摘要:
所幸,携程开源了新一代配置中心-Apollo项目,最近在项目中使用了一段时间,感觉确实方便不少。首先本地搭建Apollo,请参照官网资料https://github.com/ctripcorp/apollo/wiki/Quick-Start。进入Apollo的管理UI,创建项目:创建项目后,就可以在项目中添加Key、value了:添加key后,需要发布才能生效。在.netcore项目中添加Com.Ctrip.Framework.Apollo.Configuration的nuget包(难道是java程序员写的?),修改Program.cs文件及appsettings.json文件,appsettings.json文件的AppId对应上文中的应用ID,MetaServer的地址Apollo的Euraka的Server地址:publicstaticIWebHostBuildWebHost=˃WebHost.CreateDefaultBuilder.ConfigureAppConfiguration.UseStartup().Build();{"apollo":{"AppId":"SampleApp","MetaServer":"http://192.168.2.168:8080"}}这样就可以在项目中读取apollo里的配置项了,是不是很简单。

做开发这么多年,经常因配置的问题引发生产环境的bug。有些年久的项目,几百个密密麻麻的配置项,经常容易搞混,有时好几个项目有好多同样的配置项,配置工作也不厌其烦。所幸,携程开源了新一代配置中心 - Apollo项目,最近在项目中使用了一段时间,感觉确实方便不少。

首先本地搭建Apollo,请参照官网资料https://github.com/ctripcorp/apollo/wiki/Quick-Start。

进入Apollo的管理UI,创建项目:

.net core使用Apollo做统一配置管理第1张

创建项目后,就可以在项目中添加Key、value了:

.net core使用Apollo做统一配置管理第2张

添加key后,需要发布才能生效。

在.netcore项目中添加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做统一配置管理》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇socket.io多房间聊天学Android开发 这19个开发工具助你顺风顺水下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

springboot&amp;amp;layedit 上传文件,配置静态资源文件,存放磁盘其他目录

配置文件配置存放路径 upload-path=D:/upimages/ 表单页面 layedit.set({ uploadImage: { url: '/manage/upload' //接口url ,type: 'post' //默认post...

httpclient4例子

参考:http://hc.apache.org/httpclient-3.x/tutorial.html importorg.apache.http.HttpEntity; importorg.apache.http.client.methods.CloseableHttpResponse; importorg.apache.http.client.me...

MyBatis的SQL语句映射文件详解

SQL 映射XML 文件是所有sql语句放置的地方。需要定义一个workspace,一般定义为对应的接口类的路径。写好SQL语句映射文件后,需要在MyBAtis配置文件mappers标签中引用 <mapper namespace="com.mybaits.bean.User"> <!-- 将结果集转化成对象 -->...

AOP+自定义注解实现全局参数校验

AOP+自定义注解实现全局参数校验 在开发过程中,用户传递的数据不一定合法,虽然可以通过前端进行一些校验,但是为了确保程序的安全性,保证数据的合法,在后台进行数据校验也是十分必要的。 后台的参数校验 在controller方法中校验: 后台的参数是通过controller方法获取的,所以最简单的参数校验的方法,就是在controller方法中进行参数校验。...

【学习】026 Zookeeper

什么Zookeeper Zookeeper是一个分布式开源框架,提供了协调分布式应用的基本服务,它向外部应用暴露一组通用服务——分布式同步(Distributed Synchronization)、命名服务(Naming Service)、集群维护(Group Maintenance)等,简化分布式应用协调及其管理的难度,提供高性能的分布式服务。ZooKe...

Kubernetes 系列(六):Kubernetes部署Prometheus监控

1.创建命名空间 新建一个yaml文件命名为monitor-namespace.yaml,写入如下内容: apiVersion: v1 kind: Namespace metadata: name: monitoring 执行如下命令创建monitoring命名空间: kubectl create -f monitor-namespace.yam...