原文鏈接
GitHub項(xiàng)目地址
Gitee項(xiàng)目地址
(資料圖)
Apollo(阿波羅)是攜程框架部門研發(fā)的分布式配置中心,能夠集中化管理應(yīng)用不同環(huán)境、不同集群的配置,配置修改后能夠?qū)崟r(shí)推送到應(yīng)用端,并且具備規(guī)范的權(quán)限、流程治理等特性,適用于微服務(wù)配置管理場(chǎng)景。
Apollo 與 properties 配置文件的功能相同,都可以設(shè)置參數(shù)。Apollo 的優(yōu)點(diǎn)在于,可以實(shí)時(shí)修改參數(shù)的值,而不需要重啟項(xiàng)目。
1 環(huán)境準(zhǔn)備
需要 Java 1.8 及以上,MySQL 5.6 及以上的版本。
MySQL安裝配置方式:https://mp.weixin.qq.com/s/ISCjsIpmccVnuvXPkiFLMw
如果只是本地測(cè)試的話,推薦使用 GitHub 上的開源項(xiàng)目 Apollo Quick Start;
安裝包下載地址:https://pan.baidu.com/s/11dYV5x1Qu7svEGaJLShoqQ?pwd=6666
提取碼:6666
2 SQL 導(dǎo)入
下載并解壓安裝包 apollo-quick-start-2.0.1.zip,可以看到目錄下有 sql 文件夾,里面有 apolloconfigdb.sql 和 apolloportaldb.sql 兩個(gè)文件,需要將這兩個(gè)文件導(dǎo)入 MySQL中。
打開 win 菜單中的 MySQL 8.0 Command Line Client - Unicode 命令,
運(yùn)行:
source D:\Apollo\apollo-quick-start-2.0.1\sql\apolloconfigdb.sqlsource D:\Apollo\apollo-quick-start-2.0.1\sql\apolloportaldb.sql
D:\Apollo
是我存放 apollo-quick-start-2.0.1 文件夾的路徑。
即可完成導(dǎo)入。
導(dǎo)入成功后,可以通過(guò)執(zhí)行以下sql語(yǔ)句來(lái)驗(yàn)證:
select `NamespaceId`, `Key`, `Value`, `Comment` from ApolloConfigDB.Item;
有以下輸出,表示導(dǎo)入成功。
3 啟動(dòng) Apollo
編輯 apollo-quick-start-2.0.1文件夾下的 demo.sh,修改 ApolloPortalDB 和 ApolloConfigDB 相關(guān)的數(shù)據(jù)庫(kù)連接配置信息。
#apollo config db infoapollo_config_db_url=jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8apollo_config_db_username=rootapollo_config_db_password=root# apollo portal db infoapollo_portal_db_url=jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8apollo_portal_db_username=rootapollo_portal_db_password=root
我的數(shù)據(jù)庫(kù)的賬號(hào)密碼均為 root。
找到 demo.sh 的第72行,將 cd "${0%/*}"
改為當(dāng)前路徑:
cd D:\\Apollo\\apollo-quick-start-2.0.1\\
打開 win 菜單中的 Git Bash,運(yùn)行 demo.sh 。
D:\\Apollo\\apollo-quick-start-2.0.1\\demo.sh start
等待運(yùn)行一段時(shí)間后,當(dāng)看到如下輸出,就說(shuō)明啟動(dòng)成功了。
==== starting service ====Service logging file is ./service/apollo-service.logStarted [10768]Waiting for config service startup.......Config service started. You may visit http://localhost:8080 for service status now!Waiting for admin service startup....Admin service started==== starting portal ====Portal logging file is ./portal/apollo-portal.logStarted [10846]Waiting for portal startup......Portal started. You can visit http://localhost:8070 now!
訪問(wèn) http://localhost:8070 ,輸入用戶名 apollo,密碼 admin,即可登錄。
停止運(yùn)行命令:
D:\\Apollo\\apollo-quick-start-2.0.1\\demo.sh stop
需要注意,apollo 端口號(hào)為8070,但在 Java 工程的 properties 中,apollo.meta
設(shè)置的端口號(hào)應(yīng)為 Eureka 的端口號(hào)8080。
4 使用 Apollo
點(diǎn)擊創(chuàng)建應(yīng)用:
輸入自定義的參數(shù):
即可創(chuàng)建成功。然后在新創(chuàng)建的應(yīng)用中增加配置:
5 項(xiàng)目實(shí)例
下載一個(gè)測(cè)試項(xiàng)目 learn-apollo
:
GitHub地址:https://github.com/Snowstorm0/learn-apollo
Gitee地址:https://gitee.com/Snowstorm0/learn-apollo
在運(yùn)行項(xiàng)目之前需要修改 resource/application.properties 中 apollo.meta 的值,將 localhost 替換為 apollo 的地址,端口號(hào)為 Eureka 的端口號(hào)(默認(rèn)為8080)。
在 Apollo 中新增并發(fā)布如下三個(gè)參數(shù):
learn-apollo
是一個(gè)定時(shí)任務(wù),可以每隔5秒輸出一次apollo的參數(shù)信息。
運(yùn)行該項(xiàng)目,輸出:
paramStr:str1
然后在apollo中修改參數(shù)的值,將str1
改為str2
。
不需要重啟項(xiàng)目,此時(shí)項(xiàng)目會(huì)輸出參數(shù)更新的日志信息:
[Apollo-Config-1] c.f.a.s.p.AutoUpdateConfigChangeListener : Auto update apollo changed value successfully, new value: paramStr7, key: param.paramStr, beanName: myService, field: com.spring.boot.service.MyService.paramStr
項(xiàng)目的輸出也變了:
paramStr:str2
關(guān)鍵詞:
責(zé)任編輯:Rex_25