架构设计:服务自动化部署和管理流程
本文源碼:GitHub·點(diǎn)這里 || GitEE·點(diǎn)這里
一、分布式服務(wù)
從常規(guī)分布式架構(gòu)系統(tǒng)來說,劃分出十來個獨(dú)立的微服務(wù)模塊是很常見的,然后不同的開發(fā)人員分工幾個服務(wù)塊,負(fù)責(zé)日常開發(fā)和維護(hù),微服務(wù)之間會出現(xiàn)版本差異也是自然的。例如用戶服務(wù)需要開發(fā)版本為7.0,其他服務(wù)可能高于這個版本或者低于這個版本,所以對服務(wù)發(fā)布這塊做持續(xù)集成就很有必要。
現(xiàn)在比較通用的服務(wù)自動發(fā)布和管理的技術(shù)棧:Jenkins持續(xù)集成工具、Docker容器、K8S容器管理。
二、Jenkins集成
Jenkins可以很方便的整合常用的代碼倉庫,例如:GitHub、SVN等,提供持續(xù)集成能力,可以把整個代碼構(gòu)建打包,部署做成自動管理流程,代碼一經(jīng)提交就會自動發(fā)布到指定環(huán)境下,極大減少非必要的工作量。
- 開發(fā)人員提交本地代碼;
- 代碼倉庫通過Hook機(jī)制通知Jenkins;
- Jenkins獲取最新代碼編譯打包;
- 生成Docker鏡像文件上傳到中心倉庫;
- 最終觸發(fā)滾動或者灰度等發(fā)布機(jī)制;
在整個代碼發(fā)布過程如果出現(xiàn)問題,可以快速的回滾到上個版本,需要手動處理的流程極少,作為程序員這個職業(yè),越是工作時間長,越要善用自動化的流程。系統(tǒng)架構(gòu)越復(fù)雜,則服務(wù)部署、數(shù)據(jù)和環(huán)境隔離、容災(zāi)、灰度、動態(tài)擴(kuò)容就更是需要自動管理,上述技術(shù)體系可以很輕松的解決這些問題。
三、Docker容器
Docker是作為開源的應(yīng)用容器引擎,有三個核心概念,Image-鏡像,Container-容器、Repository-倉庫;開發(fā)人員可以通過打包應(yīng)用和依賴包到一個可移植的容器中,容器是完全使用沙箱機(jī)制,相互之間不會有任何接口,然后發(fā)布到任何流行的服務(wù)器上,也可以實現(xiàn)虛擬化。
上述微服務(wù)模塊變多,需要持續(xù)集成工具管理;同理當(dāng)Docker容器變多和復(fù)雜,管理和調(diào)度也是一個問題。
四、K8S容器管理
Kubernetes簡稱K8S,用做靈活和便捷管理和調(diào)度Docker容器,提供應(yīng)用部署、規(guī)劃、更新、維護(hù)的一種機(jī)制,讓部署容器化的應(yīng)用簡單并且高效,支持自動化部署、大規(guī)模可伸縮、應(yīng)用容器化管理。
在上面的部署環(huán)境架構(gòu)下,Docker可以理解為Kubernetes上的一個組件,通過K8S去統(tǒng)一管理。
這樣一套服務(wù)發(fā)布和環(huán)境管理的技術(shù)體系現(xiàn)在非常常用,從開發(fā)的角度看,熟悉基本使用流程最好,原理邏輯不負(fù)責(zé),但是實際操作復(fù)雜,通常由專業(yè)的運(yùn)維管理,能說清楚環(huán)境的搭建思路也是面試中常見的問題。
五、源代碼地址
GitHub地址:知了一笑 https://github.com/cicadasmile/spring-cloud-base GitEE地址:知了一笑 https://gitee.com/cicadasmile/spring-cloud-base推薦閱讀:編程體系整理
| 01 | Java描述設(shè)計模式,算法,數(shù)據(jù)結(jié)構(gòu) | GitHub·點(diǎn)這里 | GitEE·點(diǎn)這里 | ☆☆☆☆☆ |
| 02 | Java基礎(chǔ)、并發(fā)、面向?qū)ο蟆eb開發(fā) | GitHub·點(diǎn)這里 | GitEE·點(diǎn)這里 | ☆☆☆☆ |
| 03 | SpringCloud微服務(wù)基礎(chǔ)組件案例詳解 | GitHub·點(diǎn)這里 | GitEE·點(diǎn)這里 | ☆☆☆ |
| 04 | SpringCloud微服務(wù)架構(gòu)實戰(zhàn)綜合案例 | GitHub·點(diǎn)這里 | GitEE·點(diǎn)這里 | ☆☆☆☆☆ |
| 05 | SpringBoot框架基礎(chǔ)應(yīng)用入門到進(jìn)階 | GitHub·點(diǎn)這里 | GitEE·點(diǎn)這里 | ☆☆☆☆ |
| 06 | SpringBoot框架整合開發(fā)常用中間件 | GitHub·點(diǎn)這里 | GitEE·點(diǎn)這里 | ☆☆☆☆☆ |
| 07 | 數(shù)據(jù)管理、分布式、架構(gòu)設(shè)計基礎(chǔ)案例 | GitHub·點(diǎn)這里 | GitEE·點(diǎn)這里 | ☆☆☆☆☆ |
| 08 | 大數(shù)據(jù)系列、存儲、組件、計算等框架 | GitHub·點(diǎn)這里 | GitEE·點(diǎn)這里 | ☆☆☆☆☆ |
總結(jié)
以上是生活随笔為你收集整理的架构设计:服务自动化部署和管理流程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 资料收集--Subversion与CVS
- 下一篇: IE8中HTTP连接数目的变化