说明:
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