天天看點

架構設計:服務自動化部署和管理流程一、分布式服務二、Jenkins內建三、Docker容器四、K8S容器管理

一、分布式服務

從正常分布式架構系統來說,劃分出十來個獨立的微服務子產品是很常見的,然後不同的開發人員分工幾個服務塊,負責日常開發和維護,微服務之間會出現版本差異也是自然的。例如使用者服務需要開發版本為7.0,其他服務可能高于這個版本或者低于這個版本,是以對服務釋出這塊做持續內建就很有必要。

現在比較通用的服務自動釋出和管理的技術棧:Jenkins持續內建工具、Docker容器、K8S容器管理。

二、Jenkins內建

Jenkins可以很友善的整合常用的代碼倉庫,例如:GitHub、SVN等,提供持續內建能力,可以把整個代碼建構打包,部署做成自動管理流程,代碼一經送出就會自動釋出到指定環境下,極大減少非必要的工作量。

架構設計:服務自動化部署和管理流程一、分布式服務二、Jenkins內建三、Docker容器四、K8S容器管理
  • 開發人員送出本地代碼;
  • 代碼倉庫通過Hook機制通知Jenkins;
  • Jenkins擷取最新代碼編譯打包;
  • 生成Docker鏡像檔案上傳到中心倉庫;
  • 最終觸發滾動或者灰階等釋出機制;

在整個代碼釋出過程如果出現問題,可以快速的復原到上個版本,需要手動處理的流程極少,作為程式員這個職業,越是工作時間長,越要善用自動化的流程。系統架構越複雜,則服務部署、資料和環境隔離、容災、灰階、動态擴容就更是需要自動管理,上述技術體系可以很輕松的解決這些問題。

三、Docker容器

Docker是作為開源的應用容器引擎,有三個核心概念,Image-鏡像,Container-容器、Repository-倉庫;開發人員可以通過打包應用和依賴包到一個可移植的容器中,容器是完全使用沙箱機制,互相之間不會有任何接口,然後釋出到任何流行的伺服器上,也可以實作虛拟化。

上述微服務子產品變多,需要持續內建工具管理;同理當Docker容器變多和複雜,管理和排程也是一個問題。

四、K8S容器管理

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

架構設計:服務自動化部署和管理流程一、分布式服務二、Jenkins內建三、Docker容器四、K8S容器管理

在上面的部署環境架構下,Docker可以了解為Kubernetes上的一個元件,通過K8S去統一管理。

這樣一套服務釋出和環境管理的技術體系現在非常常用,從開發的角度看,熟悉基本使用流程最好,原理邏輯不負責,但是實際操作複雜,通常由專業的運維管理,能說清楚環境的搭建思路也是面試中常見的問題。

繼續閱讀