Apollo 分布式配置中心详解

· · 2848 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

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

Apollo 分布式配置中心详解

本文简单从功能特点做介绍,更详细的说明请参考Apollo配置中心介绍。本地快速部署可以参考这里。线上的演示环境从这里可以访问到:

  • 106.54.227.205 (账号/密码: apollo/admin)

Apollo 配置中心产生背景

大多情况下程序随着功能的复杂,程序的配置也会增多:包括各种功能开关、参数配置、服务地址信息配置等,同时开发人员对程序配置的期望值也越来越高:配置修改后实时生效,灰度发布,分环境、分集群的管理配置、权限控制、审核机制等。

在这样的大环境下,传统的通过配置文件、数据库等方式已经越来越无法满足开发人员对配置管理的需求。Apollo 配置中心应运而生!

Apollo 配置中心功能特点

正是基于配置的特殊性, Apollo 在设计之初就立志于成为一个有治理能力的配置管理平台。当前提供了以下一些特性,

  • 统一管理不同环境、不同集群的配置

Apollo 提供了一个统一界面集中式管理不同环境(environment)、不同集群(cluster)、不同命名空间(namespace)的配置。同一份代码部署在不同的集群,可以有不同的配置,通过命名空间(namespace)可以很方便的支持多个不同应用共享同一份配置,同时还允许应用对共享的配置进行覆盖。

  • 配置修改实时生效(热发布)

用户在 Apollo 修改完配置并发布后,客户端能实时(1秒)接收到最新的配置,并通知到应用程序。

  • 版本发布管理

所有的配置发布都有版本概念,从而可以方便地支持配置的回滚。

  • 灰度发布

支持配置的灰度发布,比如点了发布后,只对部分应用实例生效,等观察一段时间没问题后再推给所有应用实例。

  • 权限管理、发布审核、操作审计

应用和配置的管理都有完善的权限管理机制,对配置的管理还分为了编辑和发布两个环节,从而减少人为的错误。所有的操作都有审计日志,可以方便的追踪问题。

  • 客户端配置信息监控

可以在界面上方便地看到配置在被哪些实例使用。

  • 部署简单

配置中心作为基础服务,可用性要求非常高,这就要求 Apollo 对外部依赖尽可能地少,目前唯一的外部依赖是 MySQL,所以部署简单,只要安装好 Java 和 MySQL 就可以让 Apollo 跑起来。

Apollo 配置中心适用范围

既然 Apollo 定位于配置中心,那么在这里有必要先简单介绍一下什么是配置。配置有以下几个属性。

  • 配置是独立于程序的只读变量

配置首先是独立于程序的,同一份程序在不同的配置下会有不同的行为。其次,配置对于程序是只读的,程序通过读取配置来改变自己的行为,但是程序不应该去改变配置。

常见的配置有:DB Connection Str、Thread Pool Size、Buffer Size、Request Timeout、Feature Switch、Server Urls 等。

  • 配置伴随应用的整个生命周期

配置贯穿于应用的整个生命周期,应用在启动时通过读取配置来初始化,在运行时根据配置调整行为。

  • 配置可以有多种加载方式

配置也有很多种加载方式,常见的有程序内部 hard code,配置文件,环境变量,启动参数,基于数据库等。

  • 配置需要治理

权限控制,由于配置能改变程序的行为,不正确的配置甚至能引起灾难,所以对配置的修改必须有比较完善的权限控制,不同环境、集群配置管理,同一份程序在不同的环境(开发,测试,生产)、不同的集群(如不同的数据中心)经常需要有不同的配置,所以需要有完善的环境、集群配置管理。

Apollo 配置中心基本使用

Apollo 基础模型

  1. 用户在配置中心对配置进行修改并发布;
  2. 配置中心通知 Apollo 客户端有配置更新;
  3. Apollo 客户端从配置中心拉取最新的配置、更新本地配置并通知到应用。
Apollo 分布式配置中心详解

界面概览

Apollo 分布式配置中心详解

上图是 Apollo 配置中心中一个项目的配置首页,在页面左上方的环境列表模块展示了所有的环境和集群,用户可以随时切换。页面中央展示了两个 namespace(application 和 FX.apollo)的配置信息,默认按照表格模式展示、编辑。用户也可以切换到文本模式,以文件形式查看、编辑。页面上可以方便地进行发布、回滚、灰度、授权、查看更改历史和发布历史等操作。

关注本站微信公众号(和以上内容无关)InfraPub ,扫码关注:InfraPub

2848 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传