Apollo配置中心部署架构详解
apollo 项目地址: https://gitcode.com/gh_mirrors/ap/apollo
一、Apollo部署架构概述
Apollo配置中心作为一款分布式配置管理系统,其部署架构设计直接关系到系统的可用性、扩展性和维护性。本文将深入剖析Apollo的各种部署方案,从最简单的单机部署到复杂的高可用多机房部署,帮助读者全面理解Apollo的架构设计思路。
二、基础概念解析
在深入部署架构前,我们需要明确几个关键概念:
-
服务组件:
- Config Service:配置服务,提供配置的读取、推送等功能
- Admin Service:配置管理服务,提供配置的修改、发布等功能
- Portal:配置管理界面
- Meta Server/Eureka:服务注册与发现组件
-
依赖关系:
- 服务之间存在调用依赖,如Admin Service依赖Config Service
- 所有服务都依赖数据库存储配置数据
-
环境概念:
- 通常包含DEV(开发)、FAT(功能测试)、UAT(用户验收)、PRO(生产)等环境
- 每个环境有独立的ConfigDB存储配置数据
三、单机部署方案
3.1 单环境All In One部署
适用场景:开发测试、学习环境
架构特点:
- 所有组件部署在同一台服务器
- 包含3个JVM进程:
- JVM8080:Meta Server + Eureka + Config Service
- JVM8090:Admin Service
- JVM8070:Portal
- 需要2个数据库:ConfigDB和PortalDB
优点:部署简单,资源消耗少 缺点:单点故障风险,不适合生产环境
3.2 多环境单机部署
适用场景:需要同时管理多个测试环境
架构特点:
- 共享一个Portal服务
- 每个环境独立部署Config Service和Admin Service
- 每个环境有独立的ConfigDB
- PortalDB共享
示例:
- SIT环境:1台服务器 + SIT ConfigDB
- UAT环境:1台服务器 + UAT ConfigDB
- Portal:单独1台服务器 + PortalDB
优势:统一管理界面,环境隔离清晰
四、高可用部署方案
4.1 单环境高可用
核心思想:消除单点故障
实现方式:
- Config Service多实例部署(至少2台服务器)
- Admin Service多实例部署(至少2台服务器)
- Portal可单实例(管理流量较小)
数据库要求:
- ConfigDB需要高可用方案(如MySQL主从)
- PortalDB需要高可用方案
4.2 多环境高可用
架构特点:
- 每个环境独立实现高可用
- 共享Portal服务
- 每个环境:
- 至少2台Config Service服务器
- 至少2台Admin Service服务器
- 独立的高可用ConfigDB
4.3 多机房高可用
适用场景:同城双活、异地多活
架构特点:
- 每个机房部署完整服务栈
- Portal(各机房独立)
- Config Service集群
- Admin Service集群
- 共享中心数据库:
- ConfigDB(需跨机房高可用方案)
- PortalDB(需跨机房高可用方案)
优势:机房级容灾能力
五、生产环境部署建议
5.1 组件部署策略
-
Config Service:
- 根据客户端数量横向扩展
- 建议至少3节点形成集群
- 可独立部署或与Meta Server同进程
-
Admin Service:
- 管理流量较小,2-3节点足够
- 建议与Config Service同主机部署
-
Portal:
- 1-2节点即可满足需求
- 建议独立部署
5.2 数据库部署
-
ConfigDB:
- 每个环境独立
- 生产环境建议MySQL集群
- 读写分离架构
-
PortalDB:
- 所有环境共享
- 高可用MySQL集群
- 定期备份
5.3 网络规划
- 服务间通信使用内网域名
- 配置防火墙规则:
- Portal开放外网访问
- Config Service/Admin Service仅内网访问
- 跨机房部署需保证网络延迟<5ms
六、性能与扩展性考虑
-
Config Service扩展:
- 单节点可支持数千客户端
- 通过增加节点线性扩展
-
数据库性能:
- ConfigDB:关注写性能(配置发布)
- PortalDB:关注读性能(配置查询)
-
缓存策略:
- 客户端本地缓存
- 服务端多级缓存
七、典型部署架构示例
7.1 中型企业部署
- 环境:DEV、FAT、UAT、PRO
- PRO环境:
- 3台Config Service
- 2台Admin Service
- 1台Portal
- MySQL主从集群
- 非PRO环境:
- 2台Config Service
- 1台Admin Service
- 共享Portal
7.2 大型互联网企业部署
- 环境:DEV、FAT、UAT、PRE、PRO
- PRO环境:
- 双机房部署
- 每个机房:
- 5台Config Service
- 3台Admin Service
- 1台Portal
- 跨机房MySQL集群
- 流量调度:
- DNS智能解析
- 机房流量自动切换
八、总结
Apollo的部署架构设计需要根据实际业务需求、团队规模和可用性要求进行灵活调整。从小型团队的简单部署到大型企业的高可用多机房部署,Apollo都能提供合适的架构方案。关键是要理解各组件的职责和依赖关系,合理规划资源,确保系统稳定可靠地运行。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考