基于spring boot简单搭建一个apollo配置中心

github load下apollo项目源码(1.2.0)

地址是:https://github.com/ctripcorp/apollo ,前面我下载过快速启动的版本,好像版本是1.1.0,会有登录页面卡顿,无法删除NameSpace、增加人员等权限问题,所以还是下最新的吧。

clone完项目之后,导入apolloconfigdb.sql,apolloportaldb.sql,新建两个数据库,修改build.bat/sh中的数据库地址等信息,根据你的环境需要修改meta服务地址信息

基于spring boot简单搭建一个apollo配置中心_第1张图片

基于spring boot简单搭建一个apollo配置中心_第2张图片

执行build.bat/build.sh,依次启动(window下),或者把以下三个文件发布到linux环境中

1、apollo-configservice项目 target目录下的apollo-configservice-1.1.2.jar

2、apollo-adminservice项目 target目录下的apollo-adminservice-1.1.2.jar

3、apollo-portal项目 target目录下的apollo-portal-1.1.2.jar

温馨提示:如果三个项目想跑在一个节点下,首先要修改apollo-portal项目的端口,或者在启动时指定,不然会暂用8080端口,与configservice冲突,并且记得要使用build.bat/build.sh打包,或者按自己的需要选择自己的profile再打包

原因是因为apollo中,针对不同的profile有一些个性化的操作,比如说不指定auth profile,那么protal项目启动后,会默认用apollo用户登录,无法退出..等等,可以自行看源码@ConditionalOnMissingProfile/@ConditionalOnProfile部分

接着进行portal项目,配置项目信息,如我的portal端口是8070,那么就访问127.0.0.1:8070,

默认账户名apollo,密码admin

基于spring boot简单搭建一个apollo配置中心_第3张图片

1、点击创建项目,自定义应用id 

2、点击左下角,创建自己的NameSpace(用原有的application.properties也可以)

3、选择私有NameSpace,保存

基于spring boot简单搭建一个apollo配置中心_第4张图片

4、新增配置,点击发布 

项目启动完成后,开始修改我们原有的spring boot项目

 在application.properties/yml/boostrap.yml中添加

  1、app.id={自定义应用id}

  2、apollo.meta={configservice地址}

  3、修改apollo.cacheDir地址,如果配置中心服务宕机,cache配置的地址

4、修改原有的读取properties工具类,或者新建一个,下面是个demo 

@Component
@Slf4j
public class ConfigUtil {

	private static Config config;
    //注意这里 是你刚刚新建的nameSpace的名字,我因为是起的项目名,所以用applicatoin.name
	@Value("${spring.application.name}")
	private String applicationName;
	/**
	 * 获取namespace的配置,相当于获取.properties
	 * @return
	 */
	@Bean
	public Config config(){
	    return ConfigService.getConfig(applicationName);
	}

	/**
	 * 注册config 到ConfigUtil.config 并添加config change事件
	 * @param config
	 */
	@Autowired
	public void setConfig(Config config) {
		this.config = config;
		config.addChangeListener(changeEvent -> {
			log.info("Changes for namespace : {}",changeEvent.getNamespace());
			for (String key1 : changeEvent.changedKeys()) {
				ConfigChange change = changeEvent.getChange(key1);
				log.info("Found change - key: {}, oldValue: {}, newValue: {}, changeType: {}",change.getPropertyName(), change.getOldValue(), change.getNewValue(), change.getChangeType());
			}
		});
	}
	/**
	 * 下换原有的获取getConfigValue方法,改成从apollo中获取
	 * @param key
	 * @return
	 */
	public static String getConfigValue(String key){
		return getConfigValue(key,"");
	}
	/**
	 * 替换原有的获取getConfigValue方法,改成从apollo中获取
	 * @param key
	 * @param defaultStr
	 * @return
	 */
	public static String getConfigValue(String key, String defaultStr){
		Assert.hasText(key,"key 不能为空");
		String value = config.getProperty(key, defaultStr);
		return value;
	}
}

 启动项目,在启动参数中加上System Property -Denv=dev(这里填你想启动的apollo环境,默认是dev)

看到日志在load apollo配置

 

接着到apollo portal管理页面修改一下刚刚发布的配置,点击发布 ,发现config.addChangeListener起作用了,到此完成 

 

接下来给一些小tips:

1、首先进入管理员工具,新建项目用户;最好还是别用apollo直接建,因为权限高,一开始给开发用户分配好,各自管理各自的项目

2、也是进入用户管理,修改apollo用户密码,输入用户名apollo,再输入新密码保存就可以,跟新建用户一样

基于spring boot简单搭建一个apollo配置中心_第5张图片

3、可以进入ApolloPortalDB库,ServerConfig表修改系统参数(如所属部门等),也可以在系统参数菜单这里修改,但是你还是得从数据库看Key,再搜索

4、修改ApolloConfigDB库,ServerConfig表中的eureka信息,可以实现互备,动态扩容等等

5、建议分布式部署 https://github.com/ctripcorp/apollo/wiki/%E5%88%86%E5%B8%83%E5%BC%8F%E9%83%A8%E7%BD%B2%E6%8C%87%E5%8D%97

6、可以学习学习apollo的项目源码,具体可以看艿艿的源码分析 http://www.iocoder.cn/categories/Apollo/

综上所属,就是在接入spring boot具体项目前,最后先规划好,部门/用户等信息,后面可以多部门接入,又可以避免开发不小心误删他人项目

你可能感兴趣的:(spring,spring,boot,apollo)