分类
Java 笔记

配置中心之Apollo

随着业务系统越来越复杂,微服务架构成为主流。管理众多微服务的配置是一件头疼的事。在Spring Cloud中有提供配置中心模块,是基于文件管理方式,依赖svn/git,修改配置文件后无法自动同步。

Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。

与Spring Cloud相比,Apollo是将配置文件存入MySQL数据库中,有WEB管理界面,有权限控制,支持灰度发布,配置回滚及集群和配置文件时实同步。同时也能很好的与Spring Boot、Spring Cloud整合。以下是它的基础模型和架构模块图。

关于Apollo详细设计可参与官方文档:Apollo配置中心设计

Apollo的官方资料写得挺详细,但文档的结构不太符合我的阅读习惯。比如:在介绍一项配置,它列出各种集成方式。我觉得应该分开,基础的,与Spring Boot集成的,与Spring Cloud集成。废话不多说,以下是我的操作回放。

因为Apollo是开源的,所有人可以很方便的获取到源码。我下载的是官方编译好的最新版:1.3.0。

Apollo github地址:https://github.com/ctripcorp/apollo

一共三个文件:
apollo-adminservice-1.3.0-github.zip
apollo-configservice-1.3.0-github.zip
apollo-portal-1.3.0-github.zip

Apollo目前支持以下环境:

DEV:开发环境
FAT:测试环境,相当于alpha环境(功能测试)
UAT:集成环境,相当于beta环境(回归测试)
PRO:生产环境

MySQL版本要求:版本要求:5.6.5+
创建数据库:ApolloPortalDB、ApolloConfigDB
注意:一套Portal可以管理多个环境,但是每个环境都需要独立部署一套Config Service、Admin Service和ApolloConfigDB

这是从官网下载的数据库脚本:SQL.zip

关键字段说明:
Portal中新建的App都需要选择部门,所以需要在这里配置可选的部门信息,样例如下:
[{“orgId”:”TEST1″,”orgName”:”样例部门1″},{“orgId”:”TEST2″,”orgName”:”样例部门2″}

其它数据库说明参与官方资料。 参考文档:分布式部署指南

分别解压:apollo-adminservice-1.3.0-github.zip、apollo-configservice-1.3.0-github.zip、apollo-portal-1.3.0-github.zip
找到每个目录下的config/application-github.properties,修改数据库连接信息。

按文档上写,启动脚本在script目录下。我始用脚本无法启动成功。脚本里默认分配的内存很大,于是我用命令启动。注意启动是有顺序的,Apollo项目始用Spring Boot开发,注册中心用的是Eureka。configserver同时充当一个注册中心的角色。依次启动configserver,adminservice,portal
命令:java -jar ./xxx.jar

在浏览器打开:http://localhost:8070,默认用名户密码是:apollo/adminservice,portal


登录成功后创建项目:

每个应用程序默认有一个名为application的命名空间。客户端在未指定命名空间时,默认配置从application里查找。可以创建自定义命名空间,创建时可以指定配置文件格式,支持properties,xml,yml等。

保存后,选择命名空间,添加配置。

再点击发布。配置文件新增修改必须发布才会生效。

客户端使用

JAVA客户端获取配置,需要引入apollo-client包。 参考:Java客户端使用指南

这是我写的demo,下载地址:Apollo Client Demo

本文只起到抛砖引玉的作用,更多配置及与Spring集成方式,可参考官方资料。

发表评论

电子邮件地址不会被公开。