携程Apollo(阿波罗)配置中心把现有项目的配置文件迁移到Apollo
说明:
1、这个示例应该算是一个静态迁移,也就是说配置更新后要重启应用才能体现更新,目的是展示现有配置的如何迁移。
2、如果要实现更新配置后动态去更新而不重启应用的操作,比如ZK地址和数据库地址这些,下一篇再详细实践。
3、下面的示例是基于ZK实现的服务注册与发现,而只通过实现服务提供者的那部分,不实现服务消费者的,方便做个对比。
前提:
通过这里搭建好ZK的示例:http://www.cnblogs.com/EasonJim/p/7613734.html
并且搭建好单机版的服务端:http://www.cnblogs.com/EasonJim/p/7643630.html
实现步骤:
0、下面的操作都是通过官方文档实践的,参考:https://github.com/ctripcorp/apollo/wiki/Java%E5%AE%A2%E6%88%B7%E7%AB%AF%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97#324-%E5%B7%B2%E6%9C%89%E9%85%8D%E7%BD%AE%E8%BF%81%E7%A7%BB
1、在配置中心新建好项目
2、把zookeeperservice项目上的application.properties配置文件的配置项复制到这个项目上,然后删除项目上的这个文件。
注意:保存完成后要点击发布。
3、新建META-INF/app.properties,并把app.id写上zookeeperservice。
4、在POM上引入Client
<?xml version="1.0"?> <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.jsoft.testzookeeper</groupId> <artifactId>zookeeperdemo</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <groupId>com.jsoft.testzookeeper</groupId> <artifactId>zookeeperservice</artifactId> <version>0.0.1-SNAPSHOT</version> <name>zookeeperservice</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>com.ctrip.framework.apollo</groupId> <artifactId>apollo-client</artifactId> <version>0.8.0</version> </dependency> </dependencies> </project>
5、在程序的main入口的Class上增加@EnableApolloconfig注解
6、运行
一般只需要在/opt/settings/server.properties中配置了env=DEV就可以直接直接启动(因为Client在本地仓库的包上已经有了meta_server的信息),但是在IDE上也可以通过指定VM的参数,增加系统属性变量-D来实现调试,配置如下:
如果到处JAR运行,直接java -jar Spring-Boot-Demo.jar即可,不需要增加什么参数(但前提是配置了/opt/settings/server.properties的env的值)。
7、测试是否正常注册到ZK,并测试服务消费者能否正常运行
7.1、通过zkCli.sh连接后正常获取信息
7.2、通过服务消费者访问
一切正常。
测试工程:https://github.com/easonjim/5_java_example/tree/master/apollotest/test2