本文源碼:GitHub·點這里 || GitEE·點這里
一、分布式服務
從常規分布式架構系統來說,划分出十來個獨立的微服務模塊是很常見的,然后不同的開發人員分工幾個服務塊,負責日常開發和維護,微服務之間會出現版本差異也是自然的。例如用戶服務需要開發版本為7.0,其他服務可能高於這個版本或者低於這個版本,所以對服務發布這塊做持續集成就很有必要。
現在比較通用的服務自動發布和管理的技術棧:Jenkins持續集成工具、Docker容器、K8S容器管理。
二、Jenkins集成
Jenkins可以很方便的整合常用的代碼倉庫,例如:GitHub、SVN等,提供持續集成能力,可以把整個代碼構建打包,部署做成自動管理流程,代碼一經提交就會自動發布到指定環境下,極大減少非必要的工作量。
- 開發人員提交本地代碼;
- 代碼倉庫通過Hook機制通知Jenkins;
- Jenkins獲取最新代碼編譯打包;
- 生成Docker鏡像文件上傳到中心倉庫;
- 最終觸發滾動或者灰度等發布機制;
在整個代碼發布過程如果出現問題,可以快速的回滾到上個版本,需要手動處理的流程極少,作為程序員這個職業,越是工作時間長,越要善用自動化的流程。系統架構越復雜,則服務部署、數據和環境隔離、容災、灰度、動態擴容就更是需要自動管理,上述技術體系可以很輕松的解決這些問題。
三、Docker容器
Docker是作為開源的應用容器引擎,有三個核心概念,Image-鏡像,Container-容器、Repository-倉庫;開發人員可以通過打包應用和依賴包到一個可移植的容器中,容器是完全使用沙箱機制,相互之間不會有任何接口,然后發布到任何流行的服務器上,也可以實現虛擬化。
上述微服務模塊變多,需要持續集成工具管理;同理當Docker容器變多和復雜,管理和調度也是一個問題。
四、K8S容器管理
Kubernetes簡稱K8S,用做靈活和便捷管理和調度Docker容器,提供應用部署、規划、更新、維護的一種機制,讓部署容器化的應用簡單並且高效,支持自動化部署、大規模可伸縮、應用容器化管理。
在上面的部署環境架構下,Docker可以理解為Kubernetes上的一個組件,通過K8S去統一管理。
這樣一套服務發布和環境管理的技術體系現在非常常用,從開發的角度看,熟悉基本使用流程最好,原理邏輯不負責,但是實際操作復雜,通常由專業的運維管理,能說清楚環境的搭建思路也是面試中常見的問題。
五、源代碼地址
GitHub地址:知了一笑
https://github.com/cicadasmile/spring-cloud-base
GitEE地址:知了一笑
https://gitee.com/cicadasmile/spring-cloud-base
推薦閱讀:編程體系整理
序號 | 項目名稱 | GitHub地址 | GitEE地址 | 推薦指數 |
---|---|---|---|---|
01 | Java描述設計模式,算法,數據結構 | GitHub·點這里 | GitEE·點這里 | ☆☆☆☆☆ |
02 | Java基礎、並發、面向對象、Web開發 | GitHub·點這里 | GitEE·點這里 | ☆☆☆☆ |
03 | SpringCloud微服務基礎組件案例詳解 | GitHub·點這里 | GitEE·點這里 | ☆☆☆ |
04 | SpringCloud微服務架構實戰綜合案例 | GitHub·點這里 | GitEE·點這里 | ☆☆☆☆☆ |
05 | SpringBoot框架基礎應用入門到進階 | GitHub·點這里 | GitEE·點這里 | ☆☆☆☆ |
06 | SpringBoot框架整合開發常用中間件 | GitHub·點這里 | GitEE·點這里 | ☆☆☆☆☆ |
07 | 數據管理、分布式、架構設計基礎案例 | GitHub·點這里 | GitEE·點這里 | ☆☆☆☆☆ |
08 | 大數據系列、存儲、組件、計算等框架 | GitHub·點這里 | GitEE·點這里 | ☆☆☆☆☆ |