介绍
随着程序功能的日益复杂,程序的配置日益增多,对程序配置的期望值也越来越高:配置修改后实时生效,灰度发布,分环境、分集群管理配置,完善的权限、审核机制,Apollo(阿波罗)是一款可靠的分布式配置管理中心,诞生于携程框架研发部,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
配置维度及说明
支持4个维度管理Key-Value格式的配置:
application (应用)
environment (环境)
cluster (集群)
namespace (命名空间)
Namespace是配置项的集合,类似于一个配置文件的概念。它的获取权限分为两种:private和public。类型有三种:私有类型、公共类型、关联类型(继承类型)。
private权限的Namespace,只能被所属的应用获取到。一个应用尝试获取其它应用private的Namespace,Apollo会报“404”异常。私有类型的Namespace具有private权限。
public权限的Namespace,能被任何应用获取。公共类型的Namespace具有public权限。公共类型的Namespace相当于游离于应用之外的配置,且通过Namespace的名称去标识公共Namespace,所以公共的Namespace的名称必须全局唯一。
关联类型又可称为继承类型,关联类型具有private权限。关联类型的Namespace继承于公共类型的Namespace,用于覆盖公共Namespace的某些配置。
发布功能与回滚机制
Apollo支持热发布,也即不需要重启进程实现配置更改,可以在配置更改后,由客户端实时接收。Apollo支持灰度发布,可配置仅对部分实例生效,测试无误后推送到所有实例中去。Apollo的回滚机制是将发布到客户端的配置回滚到上一个已发布版本,也就是说客户端读取到的配置会恢复到上一个版本,但页面上编辑状态的配置是不会回滚的,从而开发可以在修复配置后重新发布。
可视化的WEB页面和开放平台API
Apollo自身提供了比较完善的配置管理界面,支持多种环境的配置管理、权限、流程治理等。也可以方便的看到配置在被哪些实例所使用。应用和配置的管理都有完善的权限管理机制,还具有发布审核、操作审计的功能,可以方便查看日志并追踪问题。除了提供Java和.Net的原生客户端外也提供了Http接口方便其他应用使用。