此係列文章將會描述Java框架Spring Boot、服務治理框架Dubbo、應用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等開源框架,其中穿插着Spring Boot中日誌切面等技術的實現,然後通過gitlab-CI以持續集成爲Docker鏡像。
本文爲Docker項目發佈流程
本系列文章中所使用的框架版本爲Spring Boot 2.0.3-RELEASE,Spring 5.0.7-RELEASE,Dubbo 2.6.2。
Piplin部署
piplin的詳細部署流程見微服務框架(二十一)Piplin 持續部署 Docker 容器
目前所有的算法微服務暴露兩個端口,9700段爲服務調用端口,22800段爲服務QOS端口,
所有的服務均會通過zookeeper註冊中心獲取服務地址
發佈流程
docker鏡像標籤、git標籤、構建產物版本 應嚴格保持一致
部署環境的環境名稱需與spring.profiles.active
的項目配置名稱保持一致
- 項目設置docker鏡像標籤
image.tag
(如1.0.1) - git tag的標籤與docker鏡像標籤保持一致(如1.0.1)
- gitlab-CI標籤自動觸發,打包對應版本的docker鏡像並上傳至
docker
私有倉庫 - 由標籤事件觸發
piplin Webhook
,自動構建對應版本產物 - 創建構建產物版本與docker鏡像標籤保持一致(如1.0.1)
- 機櫃直接發佈 或 選擇灰度服務器灰度發佈
容器啓動時可 動態選擇配置文件 或 配置線程策略、線程數等參數
(e.g.--spring.profiles.active=dev --dubbo.provider.timeout=1500
)
灰度部署流程
可在piplin設置灰度服務器,並手動發佈
若爲REST接口,可依照每個服務至少需要兩臺服務器,按照目前的調用情況,維持一臺權重爲 100,另一臺權重爲 50,並實時根據調用情況做調整
管理中心
若希望人工管理服務提供者的上線和下線,此時需將註冊中心標識爲非動態管理模式。
dubbo.registry.dynamic = false
服務提供者初次註冊時爲禁用狀態,需人工啓用。斷線時,將不會被自動刪除,需人工禁用。
於
dubbo-admin
後臺啓動禁用操作