概述

介绍

  • Apollo 是什么?其官方文档自我介绍如下:FROM 《Apollo 设计文档 —— Home》

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

  • 服务端基于 Spring Boot 和 Spring Cloud 开发,打包后可以直接运行,不需要额外安装 Tomcat 等应用容器。

  • Java 客户端不依赖任何框架,能够运行于所有 Java 运行时环境,同时对 Spring/Spring Boot 环境也有额外支持。

  • .Net 客户端不依赖任何框架,能够运行于所有 .Net 运行时环境。

核心功能

  • Apollo 有哪些功能?其官方文档自我介绍如下:
    • 统一管理不同环境、不同集群的配置
    • 配置修改实时生效(热发布)
    • 版本发布管理
    • 灰度发布
    • 权限管理、发布审核、操作审计
    • 客户端配置信息监控
    • 提供 Java 和 .Net 原生客户端
    • 提供开放平台 API
    • 部署简单
  • 可以访问 《Apollo 功能列表》 查看详细的功能说明

部署文档

单机部署

  • 单机部署一个 Apollo 服务,架构图如下:

  • Apollo Config Service:提供配置的读取、推送等功能,服务对象是 Apollo 客户端。

  • Apollo Admin Service:提供配置的修改、发布等功能,服务对象是Apollo Portal(管理界面)。

    为什么 Config Service 和 Admin Service 分离呢?在图中,我们可以看到 Config Service 和 Admin Service 读取的是相同的 ApolloPortalDB 数据库,理论上来说可以做成一个服务。

    不过 Admin Service 因为需要不断开发 API 接口提供给 Apollo Portal,因此可能会不定期重启。而 Config Service 功能比较单纯,基本不会有太多更新,因此基本不太会重启。所以,将 Admin Service 和 Config Service 拆分成两个服务。

  • Apollo Portal:Apollo 的管理界面,进行配置的修改,服务对象是开发者和 开放平台 API。

    为什么 Admin Service 和 Portal 分离呢?在 Apollo 的设计中,不同的 DEV、FAT、UAT、PROD 环境,会部署在不同的网络环境下,进行隔离。

    因此,每个环境会部署一套 Admin Service + Config Service。而 Portal 通过调用不同环境部署的 Admin Service 提供的 API 接口,进行不同环境的配置管理。

    另外,权限管理、开放平台 API 都是由 Portal 统一实现来提供的。