清晰易懂的 Apollo 配置中心安裝與使用教程

Apollo 是攜程開源的分布式配置管理平臺,支持配置實時推送、版本管理、權限控制等功能。本教程將手把手教你完成 Apollo 核心組件安裝基礎配置管理避坑指南,助你快速掌握企業級配置管理能力。


一、環境準備(關鍵依賴)

1. 基礎組件

組件版本要求作用說明
JavaJDK 1.8+Apollo 服務端運行環境
MySQL5.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. 數據庫初始化

  1. 創建數據庫并執行初始化腳本:
    mysql -u root -p
    > CREATE DATABASE apolloconfigdb DEFAULT CHARSET utf8mb4;
    > USE apolloconfigdb;
    > source apollo/scripts/sql/apolloconfigdb.sql
    

2. 配置服務端

  1. 下載 Release 包
    https://github.com/apolloconfig/apollo/releases

    • apollo-configservice-2.1.0.jar
    • apollo-adminservice-2.1.0.jar
    • apollo-portal-2.1.0.jar
  2. 啟動 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
    
  3. 啟動 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
    
  4. 啟動 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. 創建項目與命名空間

  1. 登錄 Portal → 創建項目 → 輸入應用ID(如 order-service
  2. 進入項目 → 添加命名空間(如 application 公共配置)
  3. 配置格式:支持 Properties、YAML、JSON 等

2. 配置發布與回滾

  1. 在命名空間頁面點擊 新增配置
    # Key-Value 示例
    order.timeout = 5000
    payment.url = http://payment-service/api
    
  2. 點擊 發布 → 填寫發布備注
  3. 歷史版本 → 可一鍵回滾到任意版本

3. 客戶端集成(Spring Boot 示例)

  1. 添加 Maven 依賴:

    <dependency><groupId>com.ctrip.framework.apollo</groupId><artifactId>apollo-client</artifactId><version>2.1.0</version>
    </dependency>
    
  2. 配置 application.yml

    app:id: order-service  # 與 Portal 中的應用ID一致
    apollo:meta: http://config-service-url:8080  # Apollo Config Service 地址bootstrap:enabled: truenamespaces: application  # 命名空間
    
  3. 動態獲取配置:

    @Value("${order.timeout:3000}")  // 默認值 3000
    private int orderTimeout;
    

五、避坑指南(新手必看)

1. 配置未實時生效

  • 現象:客戶端未收到配置更新
  • 解決
    • 檢查客戶端長輪詢是否開啟(默認開啟)
    • 確認客戶端與 Config Service 網絡連通性

2. 數據庫連接池耗盡

  • 現象:日志報錯 Too many connections
  • 解決
    1. 優化 MySQL 連接數:
      SET GLOBAL max_connections = 1000;
      
    2. 調整 Apollo 數據源配置:
      spring.datasource.hikari.maximum-pool-size=20
      

3. 權限管理缺失

  • 風險:未經授權用戶修改配置
  • 解決
    1. Portal → 管理員工具用戶管理 → 創建角色
    2. 權限管理 → 按項目分配權限(如開發只讀、運維可發布)

4. 未配置監控告警

  • 現象:配置異常未能及時發現
  • 解決
    1. 集成 Prometheus 監控 JVM 指標
    2. 配置郵件/釘釘通知:
      apollo.portal.notification.enabled = true
      apollo.portal.notification.template = 配置【{key}】已變更,操作人:{operator}
      

六、企業級最佳實踐

1. 多環境管理

  • 創建不同環境(DEV/TEST/PROD)→ 通過 Cluster 隔離配置
  • 使用 灰度發布 功能逐步驗證配置

2. 配置加密

  1. 啟用 Apollo 內置加密功能:
    @ApolloJsonValue("${encrypted.password}")
    private String password;
    
  2. 通過 密鑰管理 界面加密敏感數據

3. 災備與高可用

  • 部署多節點 Config Service 和 Admin Service
  • 定期備份 MySQL 數據庫(apolloconfigdbapolloportaldb

七、總結

通過本教程,你已掌握:
? Apollo 多環境部署方法
? 配置全生命周期管理(增刪改查 + 版本控制)
? 客戶端集成與實時推送機制
? 企業級安全與穩定性方案

下一步建議

  1. 學習 Apollo OpenAPI 實現自動化運維
  2. 結合 Spring Cloud Config 構建混合配置中心
  3. 探索 Kubernetes 環境下的 Apollo 最佳實踐

立即訪問 Apollo 官方文檔 開啟你的配置管理之旅! 🚀

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/76241.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/76241.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/76241.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

PyTorch池化層詳解:原理、實現與示例

池化層&#xff08;Pooling Layer&#xff09;是卷積神經網絡中的重要組成部分&#xff0c;主要用于降低特征圖的空間維度、減少計算量并增強模型的平移不變性。本文將通過PyTorch代碼演示池化層的實現原理&#xff0c;并詳細講解最大池化、平均池化、填充&#xff08;Padding&…

如何構建并優化提示詞?

提示詞是一個小白最容易上手大模型的方式&#xff0c;提示詞就是你告訴大模型應該如何去完成一項工作的系統性的命令&#xff0c;所以寫一個好的提示詞是比較關鍵的&#xff0c;那么如何寫好一個提示詞呢&#xff1f; 要寫好提示詞&#xff0c;其實就像我們要把一些命令清晰地傳…

面向大模型的開發框架LangChain

這篇文章會帶給你 如何使用 LangChain&#xff1a;一套在大模型能力上封裝的工具框架如何用幾行代碼實現一個復雜的 AI 應用面向大模型的流程開發的過程抽象 文章目錄 這篇文章會帶給你寫在前面LangChain 的核心組件文檔&#xff08;以 Python 版為例&#xff09;模型 I/O 封裝…

【藍橋杯】動態規劃:線性動態規劃

1. 最長上升子序列(LIS) 1.1. 題目 想象你有一排數字,比如:3, 1, 2, 1, 8, 5, 6 你要從中挑出一些數字,這些數字要滿足兩個條件: 你挑的數字的順序要和原來序列中的順序一致(不能打亂順序) 你挑的數字要一個比一個大(嚴格遞增) 問:最多能挑出多少個這樣的數字? …

vue2和vue3的主要區別

一、性能優化與響應式系統 性能優化&#xff1a; Vue2&#xff1a;性能較好&#xff0c;但在大型應用中&#xff0c;當數據變化頻繁時可能出現性能瓶頸。它使用虛擬DOM來高效地進行DOM操作&#xff0c;并通過多種技術手段如懶加載、異步組件、樹形抖動等優化性能。 Vue3&…

Python: 實現數據可視化分析系統

后端基于Python 開源的 Web 框架 Flask&#xff0c;前端頁面采用 LayUI 框架以及 Echarts 圖表&#xff0c;數據庫為sqlite。系統的功能模塊分為數據采集和存儲模塊、數據處理和分析模塊、可視化展示模塊和系統管理模塊。情感分析方面使用LDA等主題建模技術&#xff0c;結合領域…

深度學習總結(3)

數據批量的概念 通常來說&#xff0c;深度學習中所有數據張量的第一個軸&#xff08;也就是軸0&#xff0c;因為索引從0開始&#xff09;都是樣本軸[samples axis&#xff0c;有時也叫樣本維度&#xff08;samples dimension&#xff09;?]?。深度學習模型不會一次性處理整個…

微軟慶祝它成立整整50周年

每周跟蹤AI熱點新聞動向和震撼發展 想要探索生成式人工智能的前沿進展嗎&#xff1f;訂閱我們的簡報&#xff0c;深入解析最新的技術突破、實際應用案例和未來的趨勢。與全球數同行一同&#xff0c;從行業內部的深度分析和實用指南中受益。不要錯過這個機會&#xff0c;成為AI領…

【操作系統(Linux)】——通過案例學習父子進程的線程異步性

本篇旨在通過幾個案例來學習父子進程的線程異步性 一、父進程與子進程 我們將要做的&#xff1a; 創建父子進程&#xff0c;觀察父子進程執行的順序&#xff0c;了解進程執行的異步行為 源代碼&#xff1a; #include <stdio.h> #include <sys/types.h> #include…

系統性能核心指標:QPS、TPS、RT、并發量詳解

系統性能核心指標&#xff1a;QPS、TPS、RT、并發量詳解 1. 引言 在分布式系統、高并發架構設計中&#xff0c;QPS、TPS、RT、并發量 等指標是衡量系統性能的關鍵。本文深入解析這些術語的定義、計算方法、關聯性及優化策略&#xff0c;幫助開發者更好地進行系統性能評估與調…

PortswiggerLab:Exploiting a mass assignment vulnerability

實驗目標 To solve the lab, find and exploit a mass assignment vulnerability to buy a Lightweight l33t Leather Jacket. You can log in to your own account using the following credentials: wiener:peter. 官方WP In Burps browser, log in to the application using…

卡爾曼濾波器的工作原理

原文: https://www.bzarg.com/p/how-a-kalman-filter-works-in-pictures/ 1 概述 你可以對某個動態系統有不確定信息的任何地方使用卡爾曼濾波器&#xff0c;并且對系統下一步的狀態做出有根據的猜測。即使出現混亂的現實狀態&#xff0c;卡爾曼濾波器都會給出一個合理的結果。…

PDFtk

如果下載的pdf文件有秘鑰的話&#xff0c;使用下面linux命令去掉秘鑰&#xff1a; pdftk 納稅記錄.pdf input_pw 261021 output 納稅記錄_output.pdf將多個單頁pdf合并為一個pdf的linux命令: pdftk 自然人電子稅務局1.pdf 自然人電子稅務局2.pdf 自然人電子稅務局3.pdf 自然人…

Openlayers:海量圖形渲染之WebGL渲染

最近由于在工作中涉及到了海量圖形渲染的問題&#xff0c;因此我開始研究相關的解決方案。我在網絡上尋找相關的解決方案時發現許多的文章都提到利用Openlayers中的WebGLPointsLayer類&#xff0c;可以實現渲染海量的點&#xff0c;之后我又了解到利用WebGLVectorLayer類可以渲…

替換jeecg圖標

替換jeecg圖標 ant-design-vue-jeecg/src/components/tools/Logo.vue <!-- <img v-else src"~/assets/logo.svg" alt"logo">-->

Codeforces Round 970 (Div. 3)題解

題目地址 https://codeforces.com/contest/2008 銳評 本次D3的前四題還是比較簡單的&#xff0c;沒啥難度區分&#xff0c;基本上差不多&#xff0c;屬于手速題。E的碼量比F大一些&#xff0c;實現略顯復雜一些。G的數學思維較明顯&#xff0c;如果很久沒有訓練這個知識點&a…

操作系統:線程間同步之事件集

事件集是線程間同步的機制之一&#xff0c;一個事件集可以包含多個事件&#xff0c;利用事件集可以完成一對多、多對多的線程間同步。 目錄 一、事件集舉例說明 二、事件集工作機制 三、RT-Thread為實例說明 四、事件集的應用場合 一、事件集舉例說明 以坐公交車為例&…

基于springboot鉆孔數據管理系統的設計與實現(源碼+lw+部署文檔+講解),源碼可白嫖!

摘要 本鉆孔數據管理系統采用B/S架構&#xff0c;數據庫是MySQL&#xff0c;網站的搭建與開發采用了先進的Java語言、Hadoop、數據可視化技術進行編寫&#xff0c;使用了Spring Boot框架。該系統從兩個對象&#xff1a;由管理員和用戶來對系統進行設計構建。用戶主要功能包括&…

全雙工分軌語音數據集:讓AI實現無縫對話

清晨&#xff0c;智能音箱根據指令-播放音樂&#xff1b;駕駛途中&#xff0c;車載助手同步處理導航與來電&#xff1b;智能會議工具無縫切換多語種對話……語音交互技術正快速融入生活。然而&#xff0c;用戶對于對話體驗追求更自然、更流暢&#xff0c;實時理解&#xff0c;動…

Python 網絡請求利器:requests 包詳解與實戰

諸神緘默不語-個人技術博文與視頻目錄 文章目錄 一、前言二、安裝方式三、基本使用1. 發起 GET 請求2. 發起 POST 請求 四、requests請求調用常用參數1. URL2. 數據data3. 請求頭 headers4. 參數 params5. 超時時間 timeout6. 文件上傳 file&#xff1a;上傳純文本文件流7. jso…