Apollo源碼解析-搭建調試環境
- 2019 年 10 月 3 日
- 筆記
準備工作
本地運行時環境
- JDK :1.8+
- MySQL :5.6.5+
- Maven :3.6.1
- IDE :IntelliJ IDEA
Apollo的表結構對timestamp使用了多個default聲明,所以需要5.6.5以上版本。
從官方倉庫 https://github.com/ctripcorp/apollo Fork 出屬於自己的倉庫 https://github.com/wupeixuan/apollo。
使用 IntelliJ IDEA 從 Fork 出來的倉庫拉取代碼。拉取完成後,Maven 會下載所需依賴包。
創建數據庫
Apollo 服務端共有兩個數據庫:
- ApolloPortalDB
- ApolloConfigDB
ApolloPortalDB 只需要在生產環境部署一個即可,而 ApolloConfigDB 需要在每個環境部署一套,如 fat、uat 和 pro 分別部署3套 ApolloConfigDB。
可以根據實際情況選擇通過手動導入SQL或是通過Flyway自動導入SQL創建。
在 Apollo 項目下的 scripts
目錄,提供了對應的初始化腳本:
創建 ApolloPortalDB
根據實際情況修改 flyway-portaldb.properties 中的 flyway.user、flyway.password 和 flyway.url 配置。
在 apollo 項目根目錄下執行mvn -N -Pportaldb flyway:migrate
導入成功後,表結構如下:
創建 ApolloConfigDB
根據實際情況修改 flyway-configdb.properties 中的 flyway.user、flyway.password 和 flyway.url 配置。
在 apollo 項目根目錄下執行mvn -N -Pconfigdb flyway:migrate
導入成功後,表結構如下:
本地啟動
啟動 Apollo Config Service 和 Apollo Admin Service
同時啟動 apollo-adminservice
和 apollo-configservice
項目,基於 apollo-assembly
項目來啟動。
- 配置 IDEA Application
Main class:com.ctrip.framework.apollo.assembly.ApolloApplication VM options: -Dapollo_profile=github -Dspring.datasource.url=jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8 -Dspring.datasource.username=root -Dspring.datasource.password=123456 -Dlogging.file=D:/logs/apollo-assembly.log Program arguments:--configservice --adminservice Use classpath of module:apollo-assembly
- spring.datasource 配置連接 ApolloConfigDB 數據庫
- logging.file 配置日誌輸出文件
- 啟動 IDEA Application
啟動完成後,當打開 http://localhost:8080/ 看到 APOLLO-ADMINSERVICE 和 APOLLO-CONFIGSERVICE 註冊到 Eureka 中,代表啟動成功。
啟動 Apollo-Portal
- 配置 IDEA Application
Main class:com.ctrip.framework.apollo.portal.PortalApplication VM options: -Dapollo_profile=github,auth -Ddev_meta=http://localhost:8080/ -Dserver.port=8070 -Dspring.datasource.url=jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8 -Dspring.datasource.username=root -Dspring.datasource.password=123456 -Dlogging.file=D:/logsh/apollo-portal.log Use classpath of module:apollo-portal
內置賬號
- username :Apollo
- password :admin
- 啟動 IDEA Application
啟動完成後,當打開 http://localhost:8070,出現如下時,表示啟動成功。
Demo 應用接入
為了進行測試,需要創建測試的應用,Appid為 100004458 。如下圖所示:
- 配置 IDEA Application
Main class:com.ctrip.framework.apollo.demo.api.SimpleApolloConfigDemo VM options: -Denv=dev -Ddev_meta=http://localhost:8080 Use classpath of module:apollo-demo
- 啟動 IDEA Application
成功後,輸出日誌如下:
Apollo Config Demo. Please input key to get the value. Input quit to exit.
輸入 timeout
,回車,輸出如下:
timeout > [apollo-demo][main]2019-09-17 01:40:32,775 INFO [com.ctrip.framework.apollo.demo.api.SimpleApolloConfigDemo] Loading key : timeout with value: 100
客戶端日誌級別默認是DEBUG,如果需要調整,可以通過修改apollo-demo/src/main/resources/log4j2.xml中的level配置
<logger name="com.ctrip.framework.apollo" additivity="false" level="trace"> <AppenderRef ref="Async" level="DEBUG"/> </logger>