假设一个开发场景,用到三套环境dev、test和prod,把配置信息存放到Zookeeper,各个机器通过自身的hostname来获取对应的信息。下面就按照这个思路一步步来实现这样一个简单的配置中心。
将数据写入zookeeper
直接通过zkcli简单地写入几条数据,数据的分布如下:
- configuration
- dev
- spring.datasource.url=jdbc:mysql://dev.didadu.cn:3306:test
- spring.datasource.name=dev
- spring.datasource.password=devPwd
- test
- spring.datasource.url=jdbc:mysql://test.didadu.cn:3306:test
- spring.datasource.name=test
- spring.datasource.password=testPwd
- prod
- spring.datasource.url=jdbc:mysql://prod.didadu.cn:3306:test
- spring.datasource.name=teprodst
- spring.datasource.password=prodPwd
- dev
|
|
新建测试模块
在zookeeper-sample项目中新建模块configuration,没有使用SpringBoot提供的Config Server,只是简单的实现了下,核心代码如下:
修改hostname并测试
|
|
结果证明实现了当初假设的场景,这个只是简单示例,实际项目还得按需优化。