新一代开源配置中心携程Apollo详解

出于针对线上基于配置文件做配置管理太过于老派和不便于现在自动化管理和微服务化管理,运维部门需要根据不同产品统一使用配置管理中心软件,来达到统一配置中心化的目的,来加速自动化的进程,现基于开源产品调研了携程的Apollo分析如下。

总体感觉 Apollo 不是一个成熟的开源(单指没有开源经验,Server 端配置文件、Server 端部署、文档完善度有待改善),但社区活跃,可用性、稳定性不用担心。

源码地址: https://github.com/ctripcorp/apollo

基本概念

模块

Config Service

提供配置获取接口

提供配置更新推送接口

Admin Service

提供配置管理接口

提供配置修改、发布等接口

Meta Server

Meta Server 只是一个逻辑角色,可以理解为 Meta Server = Eureka

Eureka

Eureka 实现服务发现

Config Service 和 Admin Service 会向 Eureka 注册服务,并保持心跳

Eureka 和 Config Service 在一个 JVM

Portal

提供 Web 界面供用户管理配置

通过 Meta Server(Eureka)获取 Admin Service 列表

在 Portal 侧做负载均衡、错误重试

Client

集成在应用中

配置获取

内存缓存

文件缓存

模块 官方详细介绍

Namespace

Namespace 是配置项的集合,可以理解为一个配置文件。

application Namespace 是每个应用的默认 Namespace

Namespace 分 public、private 两种权限,private 仅当前应用可读,public 无限制

Namespace 类型分三种:私有类型、公共类型、关联类型(继承类型)

Namespace 官方详细介绍

Apollo 架构

配置

不需要修改

中设置数据库连接

中设置 日志、环境、端口、JVM 内存

日志路径需要设置  和  两个文件,并保持一致

中指定各环境 apollo-configservice,仅 apollo-portal 需要配置

apollo-configservice 和 apollo-adminservice 连接 Eureka 需要在 ApolloConfigDB 库的 serverconfig 表设置  指定 apollo-configservice

管理员指定需要修改 ApolloPortalDB 库中的 ServerConfig 表

部门增删改需要修改 ApolloPortalDB 库中的 ServerConfig 表

问题

启动后需要一分钟左右才能工作

无用户管理

无部门管理

无产品概念

相互通讯无严格认证机制(官方建议加密存储,客户端解密,对 API 调用不友好)

apollo-configservice 和 apollo-adminservice 的环境需要设置  启动参数

日志路径需要设置  和

Eureka > apollo-configservice 和 apollo-adminservice 连接 Eureka 需要在 apolloconfigdb 库的 serverconfig 表设置  指定一个 apollo-configservice

无关紧要

从 apollo-core 中获得

只有 apollo-portal 需要

从 apollo-common 中获得

apollo-configservice 与 apollo-portal 中的  不一样

所有 properties 格式配置放到 config 载入

apollo-configservice 端口有 Eureka 状态页

文件是源码,运行并不需要

jar 包中嵌入了 shell 脚本,最终启动是运行 jar 包, 完整脚本

高可用

apollo-portal 和 apollo-configservice 通过 Nginx 或其它方式负载均衡

apollo-adminservice 会注册在 Eureka 中,通过 apollo-configservice 获取节点信息。所以 apollo-adminservice 直接运行多个实例即可。

生产架构

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180703G09L0R00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券