環境設置:
1.1 Java
Apollo服務端:1.8+
Apollo客戶端:1.7+
1.2 MySQL
版本要求:5.6.5+
Apollo的表結構對timestamp使用了多個default聲明,所以需要5.6.5以上版本。
1.3 下載Quick Start安裝包
https://github.com/nobodyiam/apollo-build-scripts
解壓后:
2.1 創建數據庫 :
Apollo服務端共需要兩個數據庫:ApolloPortalDB和ApolloConfigDB,
數據庫、表的創建和樣例數據都分別准備了sql文件,只需要導入數據庫即可。
2.2 配置數據庫連接信息 :
Apollo服務端需要知道如何連接到你前面創建的數據庫,所以需要編輯demo.sh,
修改ApolloPortalDB和ApolloConfigDB相關的數據庫連接串信息。
我本地這里的數據庫鏈接端口是 3307 用戶名密碼 都是 root 其他配置先不要改
下面的配置能看出Apollo集成了Eureka注冊中心,config_server的地址就是eurek的地址。確保8080 8090 8070 這三個端口沒有被占用。
創建測試服務:
在工程中引入依賴:
<!-- https://mvnrepository.com/artifact/com.ctrip.framework.apollo/apollo-client --> <dependency> <groupId>com.ctrip.framework.apollo</groupId> <artifactId>apollo-client</artifactId> <version>1.7.0</version> </dependency>
application.properties:
server.port=18080 app.id=ywtb spring.application.name=provider apollo.meta=http://(本機地址):8080 apollo.bootstrap.enabled=true apollo.bootstrap.namespaces=application
測試入口:
@Controller public class TestController { @Value("${name}") private String data; @RequestMapping("/") public @ResponseBody String getApolloData(){ System.out.println(data); return "拉取數據 --> : " + data; } }
啟動Apollo配置中心:
經過git 執行腳本./demo.sh start
啟動服務
Apollo集成了Eureka注冊中心,訪問 localhost:8080 :
訪問 localhost:8090 :
訪問 localhost:8070 為 Apollo 登錄頁面 ,用戶名 : apollo 密碼 : admin
點進登錄 :
點擊創建項目 :
部門 在數據庫自改,看下張圖
AppId 和 項目配置文件 app.id 保持一致 是唯一識別標志(切記不可以0開頭,會被優化掉)
應用名稱可隨便起
部門列表修改 :
點擊提交之后多了一個模塊
點進 ywtb模塊 :
新增配置:
進來就是 Key Value 格式 ,填好點擊提交
看到控制台多一條配置 ,點擊發布 ,
狀態變為 已發布....
現在啟動 項目 訪問
控制台 和 頁面 :
1.灰度定義
灰度發布是指在黑與白之間,能夠平滑過渡的一種發布方式。在其上可以進行A/B testing,即讓一部分用戶繼續用產品特性A,一部分用戶開始用產品特性B,如果用戶對B沒有什么反對意見,那么逐步擴大范圍,把所有用戶都遷移到B上面來。
2.Apollo實現的功能
1)對於一些對程序有比較大影響的配置,可以先在一個或者多個實例生效,觀察一段時間沒問題后再全量發布配置。
2)對於一些需要調優的配置參數,可以通過灰度發布功能來實現A/B測試。可以在不同的機器上應用不同的配置,不斷調整、測評一段時間后找出較優的配置再全量發布配置。
開啟 灰度 發布 :
看到增加了 灰度版本,點擊新增灰度配置
換下 Value 值 :
開到灰度版本狀態為 未發布, 點擊右上角 灰度發布
進入規則頁面 :
IP可以在列表選,也可以手動輸入,點添加 點擊確定
結果 :
測試 :
本地的代碼打成jar包,在灰度IP對應的機器上 訪問