一 常用配置中心
随着分布式项目架构的流行,项目的配置信息管理变得越来越重要,好在市面上也涌现出众多优秀配置中心产品如nacos、apollo、disconf . 配置中心产品可根据实际需要选择,如果项目使用阿里系技术栈较多则推荐nacos, 其他情况下apollo则是较好的选项
二 apollo的安装、启动和基本使用
参考链接:https://ctripcorp.github.io/apollo/#/zh/deployment/quick-start
如果比较偏开发上面的参考链接差不多就够用了,按上文一步步操作即可成功部署apollo了,启停也特别简单 直接 ./demo.sh start |stop 即可 ,启动成功直接访问即可
打开浏览器访问出现登录界面,使用 apollo/admin作为用户名和密码即可登录成功,之后就能创建项目、创建namespace、发布配置等
三 apollo的结构
配置-->集群-->环境(env)-->应用(application)
上面从左到右是apollo从小到大的层级,需要理解namespace的含义,在apollo中namespace相当于配置的分类,按目前多模块的项目来说则可理解成每个项目拥有自己的配置,可通过namespace来划分;这和nacos的namespace有一些区别
四 springboot和apollo的整合
1 pom依赖项
<dependency>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo-client</artifactId>
<version>1.6.0</version>
</dependency>
2 配置文件编写
apollo:
bootstrap:
enabled: true
namespaces: application,service.yml
cluster: default
app:
id: springboot-apollo
因为后面的配置文件是yml所以此处需要指定后缀,如果不指定则默认找properties后缀的的配置文件
下面是配置说明,摘抄自网络
- apollo.meta: Apollo 配置中心地址。
- apollo.cluster: 指定使用某个集群下的配置。
- apollo.bootstrap.enabled: 是否开启 Apollo。
- apollo.bootstrap.namespaces : 指定使用哪个 Namespace 的配置,默认 application。
- apollo.cacheDir=/opt/data/some-cache-dir: 为了防止配置中心无法连接等问题,Apollo 会自动将配置本地缓存一份。
- apollo.autoUpdateInjectedSpringProperties: Spring应用通常会使用 Placeholder 来注入配置,如${someKey:someDefaultValue},冒号前面的是 key,冒号后面的是默认值。如果想关闭 placeholder 在运行时自动更新功能,可以设置为 false。
- apollo.bootstrap.eagerLoad.enabled : 将 Apollo 加载提到初始化日志系统之前,如果设置为 false,那么将打印出 Apollo 的日志信息,但是由于打印 Apollo 日志信息需要日志先启动,启动后无法对日志配置进行修改,所以 Apollo 不能管理应用的日志配置,如果设置为 true,那么 Apollo 可以管理日志的配置,但是不能打印出 Apollo 的日志信息。
3 项目加入apollo-env.properties
这里也尤其需要注意,只能是properties文件,不能用yml或者yaml文件代替,下面是文件内容
dev.meta=http://localhost:8080/
由于本地只有dev这个环境因此只需配置dev环境的apollo.meta就行,这个配置就是让客户端到这个地区获取配置的
4 编写springboot的项目启动类
这里和平时启动类写法差不多,就是多了一个启用apollo配置中心的注解
package com.debug;
import com.ctrip.framework.apollo.spring.annotation.EnableApolloConfig;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@EnableApolloConfig
public class StartApp {
public static void main(String[] args) {
SpringApplication.run(StartApp.class,args);
}
}
5 从apollo的web控制台添加配置
添加流程可自行查阅资料,此处不在细说,配置文件如下所示:
配置添加后一定记得发布
6 编写一个测试的controller读取配置文件的内容
package com.debug;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/test")
public class TestController {
@Value("${spring.datasource.url}")
private String url;
@GetMapping("/getConfig")
@ResponseBody
public String getConfig(){
return "url="+url;
}
}
下面是运行截图: