出于针对线上基于配置文件做配置管理太过于老派和不便于现在自动化管理和微服务化管理,运维部门需要根据不同产品统一使用配置管理中心软件,来达到统一配置中心化的目的,来加速自动化的进程,现基于开源产品调研了携程的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 直接运行多个实例即可。
生产架构
领取专属 10元无门槛券
私享最新 技术干货