- Kubernetes快速入門(第2版)
- (英)奈吉爾·波爾頓
- 1456字
- 2024-04-22 11:46:30
1.1 何為微服務(wù)
在過去,開發(fā)人員構(gòu)建和部署的是單體應(yīng)用(monolithic application)。這是比較專業(yè)的說法,在單體應(yīng)用中每個(gè)功能都被捆綁在一起作為單個(gè)大的包,如圖1-1所示。Web前端、認(rèn)證、日志生成、數(shù)據(jù)存儲(chǔ)、報(bào)告系統(tǒng)等被緊密地耦合在一起,捆綁成一個(gè)應(yīng)用。這意味著,如果想改變某個(gè)部分,必須改變每一部分。

圖1-1
舉個(gè)簡(jiǎn)單的例子,如果需要修補(bǔ)或更新圖1-1中的應(yīng)用的報(bào)告功能,必須關(guān)閉整個(gè)應(yīng)用并修補(bǔ)/更新整個(gè)應(yīng)用。像這樣的工作需要詳盡的計(jì)劃,面臨巨大的風(fēng)險(xiǎn)且十分復(fù)雜,通常還不得不在漫長(zhǎng)無聊的周末和大家一起加班完成。
但是,單體應(yīng)用帶來的痛苦還不止于此。如果想對(duì)它們的某個(gè)功能進(jìn)行擴(kuò)縮容,不得不對(duì)整個(gè)單體應(yīng)用擴(kuò)縮容。
基本上,應(yīng)用的每個(gè)功能都被作為一個(gè)單體的單元捆綁、部署、升級(jí)和擴(kuò)縮容,這是很笨拙的,顯然不是很理想。
另外,微服務(wù)應(yīng)用采用完全相同的一組功能——Web前端、認(rèn)證、日志生成、數(shù)據(jù)存儲(chǔ)、報(bào)告系統(tǒng)等,并將每個(gè)功能拆分為自己的小應(yīng)用。“小”的另一個(gè)詞是“微”,“應(yīng)用”的另一個(gè)詞是“服務(wù)”。這就是“微服務(wù)”這個(gè)術(shù)語的由來。
如果仔細(xì)觀察圖1-2你會(huì)發(fā)現(xiàn),它就是和圖1-1完全相同的一組應(yīng)用功能。不同的是,每個(gè)功能都是獨(dú)立開發(fā)、獨(dú)立部署的,并且可以獨(dú)立更新和擴(kuò)縮容。但它們依然協(xié)同工作,創(chuàng)造與單體應(yīng)用完全相同的應(yīng)用體驗(yàn)。

圖1-2
最常見的模式是每個(gè)微服務(wù)都作為獨(dú)立的容器來開發(fā)和部署。例如,Web前端微服務(wù)會(huì)是一個(gè)容器,認(rèn)證微服務(wù)會(huì)是另一個(gè)不同的容器,報(bào)告系統(tǒng)微服務(wù)又會(huì)再是不同的容器,以此類推。每個(gè)微服務(wù)都是獨(dú)立的,但又是通過網(wǎng)絡(luò)松散耦合的,以創(chuàng)建相同的應(yīng)用體驗(yàn)。
通過設(shè)計(jì)讓微服務(wù)之間是松散耦合的,這是修改一個(gè)微服務(wù)而不影響其他微服務(wù)的基礎(chǔ)。從技術(shù)上講,每個(gè)微服務(wù)都通過IP網(wǎng)絡(luò)暴露一個(gè)API,讓其他微服務(wù)能夠通過這個(gè)API來使用它。
如果不熟悉 API 這個(gè)概念,下面這個(gè)類比對(duì)你可能會(huì)有所幫助。
汽車的外形和大小各異,它們配置的可能是直列四缸、水平對(duì)臥六缸、八缸的發(fā)動(dòng)機(jī),甚至可能是電動(dòng)發(fā)動(dòng)機(jī)。但是,所有這些復(fù)雜的細(xì)節(jié)都通過使用標(biāo)準(zhǔn)化控制器——方向盤、加速器、剎車踏板和車速表對(duì)駕駛員隱藏了。在這個(gè)模型中,控制器相當(dāng)于汽車的API——駕駛員通過它們來使用汽車的功能。這種模型的一個(gè)主要優(yōu)點(diǎn)是,學(xué)會(huì)駕駛后就能駕駛?cè)魏我豢钇嚒@纾覍W(xué)開車時(shí)用的是一輛前輪驅(qū)動(dòng)的汽車,它配置的是四缸汽油發(fā)動(dòng)機(jī),但我無須學(xué)習(xí)任何新的駕駛技能就能開全輪驅(qū)動(dòng)的電動(dòng)汽車,這就是因?yàn)闃?biāo)準(zhǔn)化的方向盤和腳踏板(API)將發(fā)動(dòng)機(jī)和傳動(dòng)系統(tǒng)的復(fù)雜細(xì)節(jié)隱藏起來了。同樣,更換汽車的發(fā)動(dòng)機(jī)、替換其方向盤和輪胎、升級(jí)其排氣系統(tǒng)后,駕駛員依然能夠駕駛它,而無須學(xué)習(xí)任何新的駕駛技能。
回到正題——微服務(wù)應(yīng)用。只要沒有修改微服務(wù)的API,就可以在其他微服務(wù)和應(yīng)用用戶不會(huì)注意到的情況下對(duì)微服務(wù)進(jìn)行修補(bǔ)或更新。
除了讓微服務(wù)能夠獨(dú)立地更新和擴(kuò)縮容,微服務(wù)設(shè)計(jì)模式還讓開發(fā)團(tuán)隊(duì)更小、更敏捷,能夠更快地迭代功能。這是基于Jeff Bezos提出的兩塊比薩團(tuán)隊(duì)規(guī)則(two pizza team rule)——如果你不能用兩塊比薩養(yǎng)活一個(gè)開發(fā)團(tuán)隊(duì),那么這個(gè)團(tuán)隊(duì)就太大了。一般來說,與大團(tuán)隊(duì)相比,2~8人團(tuán)隊(duì)的溝通和合作的職場(chǎng)政治因素會(huì)更少,也會(huì)更敏捷。
微服務(wù)設(shè)計(jì)模式還有其他優(yōu)點(diǎn),但希望你能明白——將功能開發(fā)成獨(dú)立的微服務(wù),可以在不影響應(yīng)用任何部件的情況下對(duì)它們進(jìn)行開發(fā)、部署、更新、擴(kuò)縮容等。
但是,微服務(wù)并不完美。如果有很多由不同團(tuán)隊(duì)管理的移動(dòng)部件,微服務(wù)可能會(huì)變得很復(fù)雜,這需要謹(jǐn)慎的管理和良好的溝通。
最后,這兩種設(shè)計(jì)應(yīng)用的方式——單體與微服務(wù)——被稱為設(shè)計(jì)模式。微服務(wù)設(shè)計(jì)模式是當(dāng)前云時(shí)代最常見的模式。
- JBoss AS 5 Development
- 創(chuàng)意UI:Photoshop玩轉(zhuǎn)移動(dòng)UI設(shè)計(jì)
- Premiere Pro 2022短視頻剪輯、調(diào)色與特效制作實(shí)戰(zhàn)(全彩微課版)
- Oracle VM Manager 2.1.2
- CorelDRAW服裝設(shè)計(jì)實(shí)用教程(第四版)
- 超簡(jiǎn)單的攝影后期書
- 攝影輕松入門:Photoshop后期處理
- Flash基礎(chǔ)與實(shí)戰(zhàn)教程
- PostgreSQL 9.0 High Performance
- AutoCAD 2016中文版基礎(chǔ)教程(全圖解視頻版)
- 3ds Max/VRay印象燈光/材質(zhì)/渲染技術(shù)精粹Ⅲ
- Photoshop+CorelDRAW平面設(shè)計(jì)實(shí)例教程(第3版)
- After Effects 動(dòng)態(tài)圖形設(shè)計(jì):入門技法與基礎(chǔ)創(chuàng)作
- Excel 2016數(shù)據(jù)處理與分析(微課版)
- Photoshop 美工基礎(chǔ)與網(wǎng)店裝修(微課版)