使用携程Apollo搭建分布式配置中心
传统修改配置文件,需要重新打包发布,重新发布服务,而且每个环境更配置文件,很复杂
- 什么是分布式配置中心
- 将配置文件注册到配置中心的平台上,可以使用分布式配置中心实时更新配置文件,统一管理,不需要重新打包发布。
- 而且可以实现分布式的。
- 分布式配置中心常用框架
- Apollo:携程写得(阿波罗)支持springboot
- 分布式配置原理:
- 增删改查配置文件信息
- 用户创建配置文件修改portalweb平台上文件的配置(Apollo服务端提供接口给应用端)
- 应用端向Apollo服务器端获取文件信息
- 项目扫包判断是否有重写value注解,判断是否有没有该配置信息,如果没有就会直接去Apollo的平台获取。再缓存到对应的jvm上面。
- Apollo有三个平台:
- Config Service:配置文件http的接口平台,提供获取接口(接口为Apollo的应用端)
- enreka service做心跳检测
- admin service服务给portalWeb门户平台推给应用端使用监听技术(netty技术进行监听)
- 分布式配置原理:
- disconf(依赖zk的)根据事件通知来进行实时更新
- zookeeper
- diamond 阿里巴巴的配置中心
- 大型公司会有自己的配置中心框架
- Apollo:携程写得(阿波罗)支持springboot
- 使用携程Apollo搭建分布式配置中心
搭建分布式服务配置中心环境要求和常见错误- 环境要求,内存要2G以上
- 一定要安装1.8以上
- 搭建数据库 创建表 存放数据要用到的。
- apolloconfigdb 存放配置文件的 和apolloportaldb 门户网站的信息的
- Apollo源码包:apollo-master 依赖包 Apollo的环境都搭建好了。
- apollo-build-script-master 整个阿波罗环境包,使用一个命令就可以启动三个项目
- 建议mysql数据库为5.7以上的,(因为一个表中不能有两个时间戳的结构)
- 搭建Apollo-Portal门户Web配置中心平台
- 先把文件解压
- 修改demo.sh文件修改文件中连接数据库的文件信息
- 再修改一下部署的服务地址的ip地址
- 在启动时用./demo.sh start
- SpringBoot客户端整合Apollo配置中心平台
- 将Apollo的jar包打入到私服或者公司的私服中,将源码包解压在script中点击build.bat就可以把jar包打入到仓库中
- 引入依赖
- 建立yml文件配置如下:
server:
port:8001
spring:
application:
name:qxdedu_a #服务名称
enreka:
client:
service-url:
defaultZone:http://192.168.212.150:8080/enreka
#这些配置为对应是本个springboot启动用的tomcat服务器的端口号和启动Apollo的项目的Linux的IP地址和端口号。
什么配置文件需要上传到分布式配置中心里面
1. 经常改变的信息需要上传到服务器中。
2. 端口号不需要的
4. 修改环境mac或者Linux的环境在/opt/settings/server.properties
在windows中在C:\opt\settings\server.properties 都设置为env=DEV
5. 创建一个apollo-env.properties文件
1. local.meta=http://192.168.212.150:8080
2. dev.meta=http://192.168.212.150:8080
3. fat.mata=${fat_meta}
4. uat.mata=${uat_meta}
5. lpt.mata=${lpt_meta}
6. pro.mata=${pro_meta}
- 建立一个META-INF文件夹创建app.properties指定appid (appid=appid_0064)
- 建立一个包controller读取远程变量 启动这个springboot项目
- Apollo的实现原理
- 就是客户端将配置信息修改后点击确定后将数据缓存到Apollo的配置中心(但是没有将数据提交到Apollo的客户端)
- 点击提交事件后通过http协议建立长连接(一直都是长连接)把数据推给Apollo的客户端并且本地缓存一份,Apollo客户端也会定时拉取配置文件。
- 应用程序获取配置文件
[http://www.xuxueli.com/page/projects.html] xxl的社区网站