什麼是分佈式配置中心
項目中配置文件比較繁雜,而且不同環境的不同配置修改相對頻繁,每次發佈都需要對應修改配置,如果配置出現錯誤,需要重新打包發佈,時間成本較高,因此需要做統一的分佈式註冊中心,能做到自動更新配置文件信息,解決以上問題。
常用分佈式配置中心框架
註冊中心 |
配置存儲
|
時效性 |
數據模型 |
維護性 |
優點 |
缺點 |
Disconf |
Zookpeer |
實時推送 |
支持傳統的配置文件模式,亦支持KV結構數據
|
提供界面操作
|
基於分佈式的Zookeeper來實時推送穩定性、實效性、易用性上均優於其他 |
源碼較多,閱讀和使用起來相對較複雜 |
zookpeer |
zookpeer |
實時推送 |
支持傳統的配置文件模式,亦支持KV結構數
|
命令操作 |
實時推送穩定性、實效性 |
開發量大
|
diamond |
mysql |
每隔15s拉一次全量數據 |
只支持KV結構的數據 |
提供界面操 |
簡單、可靠、易用 |
數據模型不支持文件,使用不方便
|
Spring Cloud Config |
git |
人工批量刷新 |
文件模式
|
git操作
|
簡單、可靠、易用 |
需要依賴GIT,並且更新GIT
|
分佈式配置中心 解決分佈式配置文件管理
Apollo阿波羅簡介
Apollo(阿波羅)是攜程框架部門研發的分佈式配置中心,能夠集中化管理應用不同環境、不同集羣的配置,配置修改後能夠實時推送到應用端,並且具備規範的權限、流程治理等特性,適用於微服務配置管理場景。
Apollo阿波羅特點
用戶在Apollo修改完配置併發布後,客戶端能實時(1秒)接收到最新的配置,並通知到應用程序。
統一管理不同環境、不同集羣的配置
所有的配置發佈都有版本概念,從而可以方便的支持配置的回滾。
配置修改實時生效(熱發佈)
用戶在Apollo修改完配置併發布後,客戶端能實時(1秒)接收到最新的配置,並通知到應用程序
版本發佈管理
所有的配置發佈都有版本概念,從而可以方便的支持配置的回滾
灰度發佈
支持配置的灰度發佈,比如點了發佈後,只對部分應用實例生效,等觀察一段時間沒問題後再推給所有應用實例。
權限管理、發佈審覈、操作審計
應用和配置的管理都有完善的權限管理機制,對配置的管理還分爲了編輯和發佈兩個環節,從而減少人爲的錯誤。
所有的操作都有審計日誌,可以方便的追蹤問題。
同時提供了Http接口,非Java和.Net應用也可以方便的使用
部署簡單
配置中心作爲基礎服務,可用性要求非常高,這就要求Apollo對外部依賴儘可能地少
目前唯一的外部依賴是MySQL,所以部署非常簡單,只要安裝好Java和MySQL就可以讓Apollo跑起來
Apollo還提供了打包腳本,一鍵就可以生成所有需要的安裝包,並且支持自定義運行時參數
搭建Apollo配置中心
下載aploll配置中心 https://github.com/nobodyiam/apollo-build-scripts
配置數據庫參數配置
創建數據庫
Apollo服務端共需要兩個數據庫:ApolloPortalDB和ApolloConfigDB,我們把數據庫、表的創建和樣例數據都分別準備了sql文件,只需要導入數據庫即可。
配置數據庫連接信息
Apollo服務端需要知道如何連接到你前面創建的數據庫,所以需要編輯demo.sh,修改ApolloPortalDB和ApolloConfigDB相關的數據庫連接串信息。最好在上傳服務器之前修改demo.sh文件:
注意:填入的用戶需要具備對ApolloPortalDB和ApolloConfigDB數據的讀寫權限,最好直接使用root用戶
在Linux服務器安裝JDK8 以及MySQL5.7以上版本,也可以將MySQL安裝在其他位置只要在demo.sh修改MySQL文件的路徑即可,如下:
步驟1中修改相應的MySQL相應的地址、用戶、密碼
步驟2中的localhost修改爲Apollo所部署的服務器IP,Apollo只能部署在Linux環境
啓動Apollo配置中心
確保端口未被佔用
Quick Start腳本會在本地啓動3個服務,分別使用8070, 8080, 8090端口,請確保這3個端口當前沒有被使用。
例如,在Linux/Mac下,可以通過如下命令檢查:
執行啓動腳本
./demo.sh start
當提示沒有權限時 使用如下命令
chmod 777 demo.sh
然後繼續執行啓動腳本
當看到如下輸出後,就說明啓動成功了!
使用Apollo配置中心
訪問網址:打開http://localhost:8070