在分佈式系統中,要改個配置涉及到不少個系統,一個一個改效率低下,吃力不討好。用配置中心能夠解決這個問題。固然配置中心有很多,如下對比的表格是照搬Apollo Wiki的。mysql
功能點 | Apollo | Spring Cloud Config | 備註 |
---|---|---|---|
配置界面 | 一個界面管理不一樣環境、不一樣集羣配置 | 無,須要經過git操做 | |
配置生效時間 | 實時 | 重啓生效,或手動refresh生效 | Spring Cloud Config須要經過Git webhook,加上額外的消息隊列才能支持實時生效 |
版本管理 | 界面上直接提供發佈歷史和回滾按鈕 | 無,須要經過git操做 | |
灰度發佈 | 支持 | 不支持 | |
受權、審覈、審計 | 界面上直接支持,並且支持修改、發佈權限分離 | 須要經過git倉庫設置,且不支持修改、發佈權限分離 | |
實例配置監控 | 能夠方便的看到當前哪些客戶端在使用哪些配置 | 不支持 | |
配置獲取性能 | 快,經過數據庫訪問,還有緩存支持 | 較慢,須要從git clone repository,而後從文件系統讀取 | |
客戶端支持 | 原生支持全部Java和.Net應用,提供API支持其它語言應用,同時也支持Spring annotation獲取配置 | 支持Spring應用,提供annotation獲取配置 | Apollo的適用範圍更廣一些 |
本文采用了Apollo,然而Apollo的沒有爽一點的docker鏡像,因此本身寫了一個docker hub、githubgit
docker run chenchuxin/apollo adminservice.jar
docker run \ -e spring_datasource_url=jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8 \ -e spring_datasource_username=ccx \ chenchuxin/apollo
docker run \ -e spring_datasource_url=jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8 \ -e spring_datasource_username=root \ -e spring_datasource_password=xxx \ -e server.port=8080 \ -e logging.file=/opt/logs/configservice.log \ -v /opt/logs:/var/log/apollo \ --network host \ --restart always \ --name apollo_configservice \ chenchuxin/apollo \ configservice.jar
docker-compose up -d
portal設置meta_server的時候,不要用環境變量設置,在運行參數用-D
設置,如github
docker run chenchuxin/apollo -Ddev_meta=http://localhost:8080 portal.jar