windows部署Apollo

前言

配置中心伴隨着這幾年分佈式系統演變和微服務架構的興起,已經成爲必不可少的需求之一。試下一下若是哪天公司的全部應用服務,從公司服務器遷移到雲服務,成千上萬的配置,修改起來是多麼耗時費勁的事(咱們公司就是……)。html

配置中心主要有如下特色:java

  • 配置動態化
  • 管理集中化

修改配置不須要從新發布配置文件,並且能夠複用,同一個的配置只須要修改一次,省時省力。經過後臺統一管理,修改、查看,部分產品還支持配置版本管理。mysql

Why Apollo

  • 國產
  • 開源
  • 功能強大

首先是支持國產,同時在遇到問題也能夠良好的和國人交流溝通。其次功能很全,知足公司的全部須要,不須要二次開發。git

優點

阿波羅的功能很是強大,幾乎知足通常的分佈式系統的使用要求,重點主要以下:github

  • 配置多維度
    • application (應用)
    • environment (環境)
    • cluster (集羣)
    • namespace (命名空間)
  • 版本發佈管理
    • 歷史查看
    • 版本回滾
  • 後臺權限管理
    • 發佈審覈
    • 操做審計
  • 更新機制
  • 客戶端監控
    • 客戶端實例查看
    • 配置實用實例查看

缺點

強大的功能,必然伴隨少量缺點:web

  • 必定的學習成本
  • 部署繁雜

官方文檔說明部署簡單,我認爲否則,依賴jdk1.8,(我試了1.9部署Quick Start版本失敗了),mysql,腳本須要本身導入,在windows平臺還須要gitbash。sql

總的來講利大於弊,仍是值得去使用的。數據庫

準備

部署

注意jdk的環境變量配置

導入腳本

在剛下載apollo-build-scripts裏sql目錄下的兩個腳本導入到mysql裏

apolloconfigdb.sql

apolloportaldb

修改項目數據庫配置

編輯demo.sh,在apollo-build-scripts文件夾找到下面的配置項,修改成對應的數據庫信息

複製代碼
# apollo config db info
apollo_config_db_url=jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8
apollo_config_db_username=root
apollo_config_db_password=123456789

# apollo portal db info
apollo_portal_db_url=jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8
apollo_portal_db_username=root
apollo_portal_db_password=123456789
複製代碼

啓動

 

啓動

切換到剛下載的apollo-build-scripts目錄下。 注意是git方式的執行,跟cmd不同的

 /c/apollo-build-scripts-master/demo.sh start

 

 
==== starting service ====
Service logging file is ./service/apollo-service.log
Started [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.log
Started [10846]
Waiting for portal startup......
Portal started. You can visit http://localhost:8070 now!
複製代碼

若是控制檯輸出以上爲啓動成功

初體驗

輸入瀏覽器輸入http://localhost:8070

帳號:apollo

密碼:admin

能夠見到默認的有一個Sample App項目,點進去,就能夠見到下圖

.net客戶端使用

1.1 必選設置

Apollo客戶端依賴於AppIdEnvironment等環境信息來工做,因此請確保閱讀下面的說明而且作正確的配置:

1.1.1 AppId

AppId是應用的身份信息,是從服務端獲取配置的一個重要信息。

請確保在app.config或web.config有AppID的配置,其中內容形如:

<?xml version="1.0"?> <configuration> <appSettings> <!-- Change to the actual app id --> <add key="AppID" value="SampleApp"/>
</appSettings> </configuration>

注:app.id是用來標識應用身份的惟一id,格式爲string。

1.1.2 Environment

Apollo支持應用在不一樣的環境有不一樣的配置,因此Environment是另外一個從服務器獲取配置的重要信息。

Environment經過配置文件來指定,文件位置爲C:\opt\settings\server.properties,文件內容形如:

env=DEV

目前,env支持如下幾個值(大小寫不敏感):

  • DEV
    • Development environment
  • FAT
    • Feature Acceptance Test environment
  • UAT
    • User Acceptance Test environment
  • PRO
    • Production environment

1.1.3 服務地址

Apollo客戶端針對不一樣的環境會從不一樣的服務器獲取配置,因此請確保在app.config或web.config正確配置了服務器地址(Apollo.{ENV}.Meta),其中內容形如:

<?xml version="1.0"?> <configuration> <appSettings> <!-- Change to the actual app id --> <add key="AppID" value="SampleApp"/> <!-- Should change the apollo config service url for each environment --> <add key="Apollo.DEV.Meta" value="http://localhost:8080"/> <add key="Apollo.FAT.Meta" value="http://localhost:8080"/> <add key="Apollo.UAT.Meta" value="http://localhost:8080"/> <add key="Apollo.PRO.Meta" value="http://localhost:8080"/> </appSettings> </configuration>

1.1.4 本地緩存路徑

Apollo客戶端會把從服務端獲取到的配置在本地文件系統緩存一份,用於在遇到服務不可用,或網絡不通的時候,依然能從本地恢復配置,不影響應用正常運行。

本地緩存路徑位於C:\opt\data\{appId}\config-cache,因此請確保C:\opt\data\目錄存在,且應用有讀寫權限。

1.1.5 可選設置

Cluster(集羣)

Apollo支持配置按照集羣劃分,也就是說對於一個appId和一個環境,對不一樣的集羣能夠有不一樣的配置。

若是須要使用這個功能,你能夠經過如下方式來指定運行時的集羣:

  1. 經過App Config

    • 咱們能夠在App.config文件中設置Apollo.Cluster來指定運行時集羣(注意大小寫)
    • 例如,下面的截圖配置指定了運行時的集羣爲SomeCluster
  2. 經過配置文件

  3. 首先確保C:\opt\settings\server.properties在目標機器上存在
    1.  

  4. 在這個文件中,能夠設置數據中心集羣,如idc=xxx
  5. 注意key爲全小寫

Cluster Precedence(集羣順序)

  1. 若是Apollo.Clusteridc同時指定:

    • 咱們會首先嚐試從Apollo.Cluster指定的集羣加載配置
    • 若是沒找到任何配置,會嘗試從idc指定的集羣加載配置
    • 若是仍是沒找到,會從默認的集羣(default)加載
  2. 若是隻指定了Apollo.Cluster

    • 咱們會首先嚐試從Apollo.Cluster指定的集羣加載配置
    • 若是沒找到,會從默認的集羣(default)加載
  3. 若是隻指定了idc

    • 咱們會首先嚐試從idc指定的集羣加載配置
    • 若是沒找到,會從默認的集羣(default)加載
  4. 若是Apollo.Clusteridc都沒有指定:

    • 咱們會從默認的集羣(default)加載配置

啓動控制檯程序

修改配置併發布

此時返回控制檯程序查看

這個時候咱們經過監聽程序監聽到配置在後臺被修改了,同時能獲取到最新配置值

配置更新的推拉機制

從上圖看到,阿波羅配置更新具有推和拉兩種方式,在後臺修改併發布後,會及時將配置推給客戶端,假如沒推成功,客戶端會經過後臺線程定時更新。

若是客戶端與服務端發生了網絡分區,此時能夠經過客戶端獲取本地文件緩存的配置數據,讓系統正常運做。

緩存數據默認存儲在C:\opt\data

從以上來看,阿波羅在可用性設計上仍是很不錯的。

結束

客戶端  demo下載

只展現了.net環境使用  其餘語言  擴展 https://github.com/ctripcorp/apollo

相關文章
相關標籤/搜索