思维导图
文章已收录Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary
一、概述
Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性。
目前Apollo在github有22.6k颗星,在官网登记的使用的公司有451家,算是很流行的配置中心的框架技术。所以接下来跟着我一起学习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找了一下,如下:
作者在下面的回答是这样的。
这个问题发现不止有一个issue(#2931)反映了,但是没有解决,作者建议使用标准部署。
所以接下来就讲标准部署,也就是分布式部署,有耐心的同学也可以直接去github看作者写的分布式部署指南。
先介绍一下环境依赖,Linux服务器(建议CentOS7),MySQL(版本要求:5.6.5+),部署的服务器需要安装JDK环境(java 1.8+)。
这里有两种安装方式,一种是下载安装包,另一种是通过源码构建。一般如果不需要对Apollo定制开发,直接用安装包部署即可。我这里演示的就是安装包部署的方式。
3.1 获取安装包
先到官网下载安装包。
下载后解压,如下:
3.2 创建数据库
使用MySQL数据库(版本要求:5.6.5+)。
3.2.1 创建ApolloPortalDB数据库
使用github上面的sql脚本创建ApolloPortalDB数据库,导入相关的表以及数据。
3.2.2 创建ApolloConfigDB数据库
使用github上面的sql脚本创建ApolloConfigDB数据库,导入相关的表以及数据。