1. 程式人生 > >架構設計:服務自動化部署和管理流程

架構設計:服務自動化部署和管理流程

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