3千字Apollo配置中心的总结,让配置“智能”起来

思维导图

3千字Apollo配置中心的总结,让配置“智能”起来

文章插图
 
文章已收录Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary
一、概述Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性 。
目前Apollo在github有22.6k颗星,在官网登记的使用的公司有451家,算是很流行的配置中心的框架技术 。所以接下来跟着我一起学习Apollo配置中心吧 。
3千字Apollo配置中心的总结,让配置“智能”起来

文章插图
 
二、为什么使用配置中心首先,没有配置中心之前传统的配置都是写在配置文件中,比如各种yml、perproties、xml文件 。
写在各种文件里最大的问题在于如果需要改配置信息,需要重新部署发布应用才能生效,这是第一个问题 。
后面为了做到动态读取配置信息,后面有人改进一下把配置信息存储在数据库的一张表,程序读取表中的配置信息,这种方式很多公司都还在使用,因为简单,而且灵活(修改配置只需要执行个SQL语句,不需要重新部署发布) 。但是也不是最完美的,因为缺少了权限控制,没有管理界面进行统一配置,没有历史版本的配置信息,不支持回滚(防止误操作) 。
实际上配置中心在市面上已经有很多,比如Nacos、Consul、spring-cloud-config、Apollo等等 。
相对其他的,我觉得选择Apollo的原因是,界面比较美观,操作简便,部署简单,依赖较少,开箱即用 。
三、安装部署首先要讲一下Apollo部署三个服务apollo-configservice,apollo-adminservice,apollo-portal,后面我讲架构设计时会讲一下这三个服务是用来干嘛的 。
这里部署建议不要用官网的Quick Start,我一开始使用QuickStart的方式,搞了几个钟头搞不定,总是在Eureka上多了一个UNKONWN的服务,然后又无法访问8070的管理界面,心态直接崩溃 。上github找了一下,如下:
3千字Apollo配置中心的总结,让配置“智能”起来

文章插图
 
作者在下面的回答是这样的 。
3千字Apollo配置中心的总结,让配置“智能”起来

文章插图
 
这个问题发现不止有一个issue(#2931)反映了,但是没有解决,作者建议使用标准部署 。
3千字Apollo配置中心的总结,让配置“智能”起来

文章插图
 
所以接下来就讲标准部署,也就是分布式部署,有耐心的同学也可以直接去github看作者写的分布式部署指南 。
先介绍一下环境依赖,linux服务器(建议centos7),MySQL(版本要求:5.6.5+),部署的服务器需要安装JDK环境(JAVA 1.8+) 。
这里有两种安装方式,一种是下载安装包,另一种是通过源码构建 。一般如果不需要对Apollo定制开发,直接用安装包部署即可 。我这里演示的就是安装包部署的方式 。
3.1 获取安装包先到官网下载安装包 。
3千字Apollo配置中心的总结,让配置“智能”起来

文章插图
 
下载后解压,如下:
3千字Apollo配置中心的总结,让配置“智能”起来

文章插图
 
3.2 创建数据库使用MySQL数据库(版本要求:5.6.5+) 。
3.2.1 创建ApolloPortalDB数据库使用github上面的sql脚本创建ApolloPortalDB数据库,导入相关的表以及数据 。
3千字Apollo配置中心的总结,让配置“智能”起来

文章插图
 
3.2.2 创建ApolloConfigDB数据库使用github上面的sql脚本创建ApolloConfigDB数据库,导入相关的表以及数据 。
3千字Apollo配置中心的总结,让配置“智能”起来

文章插图
 
3.3 修改配置需要改一下数据库连接信息,路径在/config下 。
3.3.1 apollo-configservice配置修改apollo-configservice的数据库连接信息Application-github.properties,如下:
# DataSourcespring.datasource.url = jdbc:mysql://192.168.0.107:3306/ApolloConfigDB?characterEncoding=utf8spring.datasource.username = 账号spring.datasource.password = 密码3.3.2 apollo-adminservice配置修改apollo-adminservice的数据库连接信息application-github.properties,如下:
# DataSourcespring.datasource.url = jdbc:mysql://192.168.0.107:3306/ApolloConfigDB?characterEncoding=utf8spring.datasource.username = 账号spring.datasource.password = 密码3.3.3 apollo-portal配置修改apollo-portal的数据库连接信息application-github.properties,如下:
# DataSourcespring.datasource.url = jdbc:mysql://192.168.0.107:3306/ApolloPortalDB?characterEncoding=utf8spring.datasource.username = 账号spring.datasource.password = 密码


推荐阅读