Apollo 是攜程開源的分布式配置管理平臺,支持配置實時推送、版本管理、權限控制等功能。本教程將手把手教你完成 Apollo 核心組件安裝、基礎配置管理及避坑指南,助你快速掌握企業級配置管理能力。
一、環境準備(關鍵依賴)
1. 基礎組件
組件 | 版本要求 | 作用說明 |
---|---|---|
Java | JDK 1.8+ | Apollo 服務端運行環境 |
MySQL | 5.6.5+ | 存儲配置元數據 |
Eureka | 內嵌或獨立部署 | 服務注冊與發現(可選) |
2. 推薦部署架構
用戶訪問 → Apollo Portal (管理端)↓
Apollo Config Service (配置服務)↓
Apollo Admin Service (配置管理)↓
MySQL 數據庫
二、快速安裝部署(Docker 版)
1. 一鍵啟動(開發環境)
git clone https://github.com/ctripcorp/apollo.git
cd apollo/scripts/docker-quick-start
docker-compose up -d # 自動啟動 MySQL + Eureka + Apollo
2. 訪問控制臺
- Portal 管理端:
http://localhost:8070
默認賬號:apollo/admin
- Eureka 注冊中心:
http://localhost:8080
三、生產環境手動安裝(Linux)
1. 數據庫初始化
- 創建數據庫并執行初始化腳本:
mysql -u root -p > CREATE DATABASE apolloconfigdb DEFAULT CHARSET utf8mb4; > USE apolloconfigdb; > source apollo/scripts/sql/apolloconfigdb.sql
2. 配置服務端
-
下載 Release 包:
https://github.com/apolloconfig/apollo/releasesapollo-configservice-2.1.0.jar
apollo-adminservice-2.1.0.jar
apollo-portal-2.1.0.jar
-
啟動 Config Service:
java -jar apollo-configservice.jar \--spring.datasource.url=jdbc:mysql://localhost:3306/apolloconfigdb?useSSL=false \--spring.datasource.username=root \--spring.datasource.password=123456
-
啟動 Admin Service:
java -jar apollo-adminservice.jar \--spring.datasource.url=jdbc:mysql://localhost:3306/apolloconfigdb?useSSL=false \--spring.datasource.username=root \--spring.datasource.password=123456
-
啟動 Portal:
java -jar apollo-portal.jar \--spring.datasource.url=jdbc:mysql://localhost:3306/apolloconfigdb?useSSL=false \--spring.datasource.username=root \--spring.datasource.password=123456
四、必學核心操作
1. 創建項目與命名空間
- 登錄 Portal → 創建項目 → 輸入應用ID(如
order-service
) - 進入項目 → 添加命名空間(如
application
公共配置) - 配置格式:支持 Properties、YAML、JSON 等
2. 配置發布與回滾
- 在命名空間頁面點擊 新增配置:
# Key-Value 示例 order.timeout = 5000 payment.url = http://payment-service/api
- 點擊 發布 → 填寫發布備注
- 歷史版本 → 可一鍵回滾到任意版本
3. 客戶端集成(Spring Boot 示例)
-
添加 Maven 依賴:
<dependency><groupId>com.ctrip.framework.apollo</groupId><artifactId>apollo-client</artifactId><version>2.1.0</version> </dependency>
-
配置
application.yml
:app:id: order-service # 與 Portal 中的應用ID一致 apollo:meta: http://config-service-url:8080 # Apollo Config Service 地址bootstrap:enabled: truenamespaces: application # 命名空間
-
動態獲取配置:
@Value("${order.timeout:3000}") // 默認值 3000 private int orderTimeout;
五、避坑指南(新手必看)
1. 配置未實時生效
- 現象:客戶端未收到配置更新
- 解決:
- 檢查客戶端長輪詢是否開啟(默認開啟)
- 確認客戶端與 Config Service 網絡連通性
2. 數據庫連接池耗盡
- 現象:日志報錯
Too many connections
- 解決:
- 優化 MySQL 連接數:
SET GLOBAL max_connections = 1000;
- 調整 Apollo 數據源配置:
spring.datasource.hikari.maximum-pool-size=20
- 優化 MySQL 連接數:
3. 權限管理缺失
- 風險:未經授權用戶修改配置
- 解決:
- Portal → 管理員工具 → 用戶管理 → 創建角色
- 權限管理 → 按項目分配權限(如開發只讀、運維可發布)
4. 未配置監控告警
- 現象:配置異常未能及時發現
- 解決:
- 集成 Prometheus 監控 JVM 指標
- 配置郵件/釘釘通知:
apollo.portal.notification.enabled = true apollo.portal.notification.template = 配置【{key}】已變更,操作人:{operator}
六、企業級最佳實踐
1. 多環境管理
- 創建不同環境(DEV/TEST/PROD)→ 通過 Cluster 隔離配置
- 使用 灰度發布 功能逐步驗證配置
2. 配置加密
- 啟用 Apollo 內置加密功能:
@ApolloJsonValue("${encrypted.password}") private String password;
- 通過 密鑰管理 界面加密敏感數據
3. 災備與高可用
- 部署多節點 Config Service 和 Admin Service
- 定期備份 MySQL 數據庫(
apolloconfigdb
和apolloportaldb
)
七、總結
通過本教程,你已掌握:
? Apollo 多環境部署方法
? 配置全生命周期管理(增刪改查 + 版本控制)
? 客戶端集成與實時推送機制
? 企業級安全與穩定性方案
下一步建議:
- 學習 Apollo OpenAPI 實現自動化運維
- 結合 Spring Cloud Config 構建混合配置中心
- 探索 Kubernetes 環境下的 Apollo 最佳實踐
立即訪問 Apollo 官方文檔 開啟你的配置管理之旅! 🚀