专栏首页CSDN技术头条Apollo 配置中心详解

Apollo 配置中心详解

Apollo 配置中心产生背景

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

在这样的大环境下,传统的通过配置文件、数据库等方式已经越来越无法满足开发人员对配置管理的需求。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 配置中心中一个项目的配置首页,在页面左上方的环境列表模块展示了所有的环境和集群,用户可以随时切换。页面中央展示了两个 namespace(application 和 FX.apollo)的配置信息,默认按照表格模式展示、编辑。用户也可以切换到文本模式,以文件形式查看、编辑。页面上可以方便地进行发布、回滚、灰度、授权、查看更改历史和发布历史等操作。

本文分享自微信公众号 - CSDN技术头条(CSDN_Tech)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-03-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • MySQL 5.7 X Plugin:流水线技术vs.并行查询技术

    本文将以MySQL 5.7 X Plugin为例,对比分析流水线(pipelining)和并行查询技术。 另一篇博文《MySQL 5.7 X Plugin支持异...

    CSDN技术头条
  • 多集群真的不会管理!

    传统单一集群式的服务模式将会越来越暴露出它的局限性,包括它的单主节点性能瓶颈,异构环境下的服务模式等等,而多集群协同服务将会是大规模集群服务的一个重要演变趋势。

    CSDN技术头条
  • c++ fstream + string 处理大数据

    起因 (1)之前处理文本数据时,各种清洗数据用的都是java的File,FileReader/FileWriter,BufferedReader/Buffer...

    CSDN技术头条
  • 自己写分布式配置中心(上篇)- 单机模式

    来源:http://wuwenliang.net/2018/12/05/%E8%87%AA%E5%B7%B1%E5%86%99%E5%88%86%E5%B8%8...

    程序猿DD
  • 配置中心化

    传统应用打包部署, 会在不同的环境配置不同的包, 如Local环境, Dev环境, 测试环境, UAT环境, 生产环境分别制作不同的发布包,

    louiezhou001
  • springcloud学习手册-Config 分布式配置中心

    导读 | Config分布式配置中心 ? 一、为什么需要使用配置中心来统一管理配置呢? 通常在一个分布式环境中,同类型的、不同类型的服务往往多达几个...

    程序源代码
  • 如何利用配置中心规范构建PaaS服务配置

    在上一篇文章中,我们以MQ和ACM为例,讨论了如何借助配置中心对消息进行限流管理的场景。在本文中,我们继续以该场景为例,讲述如何以规范的配置命名格式来进行限流设...

    用户1263954
  • 【微服务】132:SpringBoot搭建SSM项目环境

    配置文件除了可以使用properties类型,还可以使用后缀名为:.yml或者.yaml的类型,比如说:application.yml文件。

    刘小爱
  • 玩转OpenFeign-续集

    上一篇《玩转OpenFeign》介绍了OpenFeign的一些常用配置,不过还漏了点内容。

    Java艺术
  • 运维自动化基础建设|配置中心和注册中心

    配置信息的来源一般是通过运维平台申请得到的,如果没有运维平台的情况下,可能是由DBA通过小窗交付给相关开发人员,相关开发人员再把对应账号密码等信息录入到配置中心...

    追马

扫码关注云+社区

领取腾讯云代金券