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

本文源碼:GitHub·點這裏 || GitEE·點這裏java

1、分佈式服務

從常規分佈式架構系統來講,劃分出十來個獨立的微服務模塊是很常見的,而後不一樣的開發人員分工幾個服務塊,負責平常開發和維護,微服務之間會出現版本差別也是天然的。例如用戶服務須要開發版本爲7.0,其餘服務可能高於這個版本或者低於這個版本,因此對服務發佈這塊作持續集成就頗有必要。git

如今比較通用的服務自動發佈和管理的技術棧:Jenkins持續集成工具、Docker容器、K8S容器管理。程序員

2、Jenkins集成

Jenkins能夠很方便的整合經常使用的代碼倉庫,例如:GitHub、SVN等,提供持續集成能力,能夠把整個代碼構建打包,部署作成自動管理流程,代碼一經提交就會自動發佈到指定環境下,極大減小非必要的工做量。github

image

  • 開發人員提交本地代碼;
  • 代碼倉庫經過Hook機制通知Jenkins;
  • Jenkins獲取最新代碼編譯打包;
  • 生成Docker鏡像文件上傳到中心倉庫;
  • 最終觸發滾動或者灰度等發佈機制;

在整個代碼發佈過程若是出現問題,能夠快速的回滾到上個版本,須要手動處理的流程極少,做爲程序員這個職業,越是工做時間長,越要善用自動化的流程。系統架構越複雜,則服務部署、數據和環境隔離、容災、灰度、動態擴容就更是須要自動管理,上述技術體系能夠很輕鬆的解決這些問題。面試

3、Docker容器

Docker是做爲開源的應用容器引擎,有三個核心概念,Image-鏡像,Container-容器、Repository-倉庫;開發人員能夠經過打包應用和依賴包到一個可移植的容器中,容器是徹底使用沙箱機制,相互之間不會有任何接口,而後發佈到任何流行的服務器上,也能夠實現虛擬化。算法

上述微服務模塊變多,須要持續集成工具管理;同理當Docker容器變多和複雜,管理和調度也是一個問題。spring

4、K8S容器管理

Kubernetes簡稱K8S,用作靈活和便捷管理和調度Docker容器,提供應用部署、規劃、更新、維護的一種機制,讓部署容器化的應用簡單而且高效,支持自動化部署、大規模可伸縮、應用容器化管理。編程

image

在上面的部署環境架構下,Docker能夠理解爲Kubernetes上的一個組件,經過K8S去統一管理。設計模式

這樣一套服務發佈和環境管理的技術體系如今很是經常使用,從開發的角度看,熟悉基本使用流程最好,原理邏輯不負責,可是實際操做複雜,一般由專業的運維管理,能說清楚環境的搭建思路也是面試中常見的問題。服務器

5、源代碼地址

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·點這裏 ☆☆☆☆☆
相關文章
相關標籤/搜索