随着项目的复杂度愈来愈高,微服务的盛行,各个中间件相互配合并发挥其优点,各类配置是避免不了的,之前尝试过配置放在文件,后来spring cloud 也推出了本身的spring cloud config 配置组件,功能上没有问题,但真正使用起来仍是不顺手,顺势而为,携程开发部门开源了一套配置平台,官方介绍详见 https://github.com/ctripcorp/apollo,这篇文章主要介绍安装及Java、Net 项目使用。java
(一) 环境要求mysql
(二) 安装设置git
a) 建库文件能够从官方下载或直接在我上传的百度网盘下载,点击下载,打开任何客户端执行Sql文件便可,能够看到两个数据库github
ApolloconfigdbFat: 为具体环境配置库,由于不一样环境须要配置不一样的存储库spring
Apolloportaldb:为管理门户sql
docker run -d --network host --restart always --name apollo -e PORTAL_DB="jdbc:mysql://192.168.1.215:3307/ApolloPortalDB?characterEncoding=utf8" -e PORTAL_DB_USER="root" -e PORTAL_DB_PWD="123456" -e FAT_DB="jdbc:mysql://192.168.1.215:3307/ApolloConfigDBFat?characterEncoding=utf8" -e FAT_DB_USER="root" -e FAT_DB_PWD="123456" idoop/docker-apollo:1.1.0
主要注意环境数据库名字及帐号信息、镜像版本。命令执行完成后,输入docker
docker ps | grep apollo
命令,查看容器状态数据库
待容器状态为Up的时候,在浏览器输入 http://192.168.1.215:8070,进入管理门户,默认管理帐号为apollo/admin。能够看到以下图示浏览器
说明服务安装成功。并发
确认没有问题,再点击发布,只有发布后,客户端才能接收到信息,这个功能很给赞,考虑的比较周全。
a) Net
添加apollo.net程序包(v1.5.0)
编辑App.config 或者其它配置文件
<add key="AppID" value="test-app"/> <add key="Apollo.FAT.Meta" value="http://192.168.1.215:8081"/>
读取配置
帮助 Utils
private static void OnChanged(object sender, ConfigChangeEventArgs changeEvent) { Console.WriteLine("Changes for namespace {0}", changeEvent.Namespace); foreach (string key in changeEvent.ChangedKeys) { ConfigChange change = changeEvent.GetChange(key); Console.WriteLine("Change - key: {0}, oldValue: {1}, newValue: {2}, changeType: {3}", change.PropertyName, change.OldValue, change.NewValue, change.ChangeType); } } static void Main(string[] args) { Config config = ConfigService.GetAppConfig(); config.ConfigChanged += OnChanged; while (true) { Thread.Sleep(200); var timeout = config.GetProperty("timeout", ""); Console.WriteLine(timeout); } }
运行程序,输入咱们在配置中定义的key,好比我设置的xxx,会返回micro,如图所示,这样服务就达到预期的效果
b) Java
添加apollo-client包
<dependency> <groupId>com.ctrip.framework.apollo</groupId> <artifactId>apollo-client</artifactId> <version>1.0.0</version> </dependency>
编辑配置文件application.properties
app.id配置APP的标志号
env 环境名称,目前支持DEV、FAT、UAT、PRO
apollo.meta config 服务
app.id = test-app
env = fat
apollo.meta = http://192.168.1.215:8081
application添加注解
@EnableApolloConfig
获取配置信息
/** * 从apollo获取配置信息 * */ @ApolloConfig private Config config; @GetMapping("/read_config") public Properties apolloReadDemo(){ /** * 获得当前app.id中的配置 * */ Set<String> set = config.getPropertyNames(); for(String key : set){ PropertiesUtils.properties.setProperty(key,config.getProperty(key,null)); } for(String key : PropertiesUtils.properties.stringPropertyNames()){ System.out.println(key+">>>"+PropertiesUtils.properties.getProperty(key)); } return PropertiesUtils.properties; }
启动项目,浏览器输入http://localhost:8089/apollo/read_demo地址查看返回结果, 8089换成你本身的项目端口号,返回以下信息,示意服务正常运行。
这样分布式配置就介绍完了,主要介绍环境搭建及Net、java 项目接入,若是在开发中遇到问题,也能够留言共同探讨共同进步。