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-adminserviceapollo-configservice 項目,基於 apollo-assembly 項目來啟動。

  1. 配置 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 配置日誌輸出文件
  1. 啟動 IDEA Application

啟動完成後,當打開 http://localhost:8080/ 看到 APOLLO-ADMINSERVICE 和 APOLLO-CONFIGSERVICE 註冊到 Eureka 中,代表啟動成功。

啟動 Apollo-Portal

  1. 配置 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
  1. 啟動 IDEA Application

啟動完成後,當打開 http://localhost:8070,出現如下時,表示啟動成功。

Demo 應用接入

為了進行測試,需要創建測試的應用,Appid為 100004458 。如下圖所示:

  1. 配置 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
  1. 啟動 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>