分布式配置中心 携程(apollo)
1.传统配置文件与分布式配置文件区别
传统配置文件:如果修改了配置文件,需要重新打包发布,重新发布服务,而且每个环境的变更配置文件,比较繁琐。
分布式配置文件:将配置文件注册到配置中心上去,可以使用分布式配置中心实时更新配置文件,统一管理配置文件,不需要重新打包发布。
2.常用的分布式配置中心框架有哪些
disconf(依赖于Zookeeper)、Zookeeper(通过Watch事件监听实现)、diamond(阿里产品)、携程(apollo)、Redis、xxl-config。
3.携程apollo介绍
Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
服务端基于Spring Boot和Spring Cloud开发,打包后可以直接运行,不需要额外安装Tomcat等应用容器。
Java客户端不依赖任何框架,能够运行于所有Java运行时环境,同时对Spring/Spring Boot环境也有较好的支持。
.Net客户端不依赖任何框架,能够运行于所有.Net运行时环境。
官网地址:https://github.com/ctripcorp/apollo/
4.apollo分布式配置中心 原理
4.1项目启动的时候连接 apollo配置中心平台。
4.2项目进行扫包获取当前包下的类。
4.3如果属性上加上了@Value("${name:sun}") 注解,使用key 在远程服务器上获取对应的value信息。@Value("${name:sun}") 意思 如果在apollo上面没有找到name对应的value,则用sun 表示该value值。
4.4 获取对应的value值,然后缓存在本地的jvm中。
4.5 流程图
描述:当客户端启动的时候会与apollo分布式配置中心管理平台建立连接进行监听、并读取服务器上配置文件信息并把配置文件信息缓存到本地的jvm中,当配置文件改变的时候,apollo分布式配置中心会把修改过的配置文件推送给客户端,然后客户端会刷新本地的jvm缓存。
5.springboot集成apollo需要注意事项
项目启动之前,需要在本地新建文件
(Mac/Linux)环境:修改/opt/settings/server.properties
(Windows)环境:C:\opt\settings\server.properties文件,设置env为DEV:
env=DEV
application.properties 不同环境 文件配置如下:
apollo-env.properties
local.meta=http://192.168.212.162:8080
dev.meta=http://192.168.212.162:8080
fat.meta=${fat_meta}
uat.meta=${uat_meta}
lpt.meta=${lpt_meta}
pro.meta=${pro_meta}
在META-INF文件夹创建app.properties 指定appid
appid=应用id,应用id指的是apollo页面上面对应的appid。
如果apollo配置在外网,需要在 demo.sh 文件中 配置一下 -Deureka.instance.ip-address=外网ip