Apollo学习
Apollo是什么
Apollo(阿波罗)是携程框架部门研发的分布式配置中心。
作用 :
- 安全性:配置跟随源代码保存在代码库中,容易造成配置泄漏
- 时效性:普通方式配置,修改配置,需要重启服务才能生效
- 局限性:无法支持动态调整:例如日志开关、功能开关
依赖配置:
<dependency>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo-client</artifactId>
<version>1.8.0</version>
</dependency>
配置中心application.properties
server.port=8088
# 应用ID
app.id=account-service
# 是否开启Apollo
apollo.bootstrap.enabled=true
# 设置Namespace,默认application
apollo.bootstrap.namespaces=application,spring-rocketmq,lcy_service.spring-boot-http
# 指定使用哪个集群的配置
apollo.cluster=default
# Apollo服务器
apollo.meta=http://localhost:8080
# 为了防止配置中心无法连接等问题,Apollo可以通过该配置在本地缓存一份配置
# apllo.cacheDir=/opt/data/some-cache-dir
# Spring应用通常会使用 Placeholder 来注入配置,如${someKey:someDefaultValue},冒号前面的是 key,冒号后面的是默认值。
# 如果想关闭 placeholder 在运行时自动更新功能,可以设置为 false。
apollo.bootstrap.eagerLoad.enabled=false
配置说明:
- app.id:在配置中心配置的应用身份信息。
- apollo.bootstrap.enabled:在应用启动阶段是否向Spring容器注入被托管的properties文件配置信息。
- apollo.bootstrap.eagerLoad.enabled:将Apollo配置加载提到初始化日志系统之前。
- apollo.bootstrap.namespaces:配置的命名空间,多个逗号分隔,一个namespace相当于一个配置文件。
- apollo.meta: 当前环境服务配置地址,生产环境建议至少双节点,可以填写多个逗号分隔,使用一个单独的域,如 http://config.xxx.com(由nginx等软件负载平衡器支持),而不是多个IP地址,因为服务器可能会扩展或缩小。
变量名 | 说明 |
---|---|
env | 所属环境 |
app.id | 应用ID |
apollo.accesskey.secret | 访问秘钥 |
apollo.configService | 配置服务,多个逗号分隔 |
apollo.cacheDir | 缓存根目录 |
apollo.cluster | 集群,默认值default |
apollo.connectTimeout | 连接超时时间,默认 1000(毫秒) |
apollo.refreshInterval | 刷新时间, 默认 5 (分钟) |
apollo.readTimeout | 读取时间 默认 5000 (毫秒) |
apollo.meta | 元数据中心地址 |
apollo.loadConfigQPS | 加载配置 每秒几次,默认 2 |
apollo.longPollQPS | 长轮询 每秒几次,默认 2 |
apollo.longPollingInitialDelayInMills | Mills中的长轮询初始延迟 默认 2000(毫秒) |
apollo.autoUpdateInjectedSpringPropertie | 自动更新spring propertie,默认true |
apollo.property.order.enable | 属性排序,默认false |
启动项添加Spring Boot 启动类,添加 @EnableApolloConfig
@SpringBootApplication
@EnableApolloConfig
public class ApolloMxnApplication {
public static void main(String[] args) {
SpringApplication.run(ApolloMxnApplication.class, args);
}
}