版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
從單體應(yīng)用到微服務(wù)的架構(gòu)演進(jìn)
【摘要】在現(xiàn)在微服務(wù)大行其道的形勢(shì)下,我們依然很難說(shuō)單體應(yīng)用一無(wú)是處。甚至有一些對(duì)性能苛刻的場(chǎng)景也同樣適合用單體應(yīng)用,這可能會(huì)顛覆一部分人的認(rèn)知。最近有不少企業(yè)都不約而同的在關(guān)注原有應(yīng)用的遷移上云和應(yīng)用改造的事情,都在糾結(jié)一個(gè)問(wèn)題,那就是是否有必要把單體應(yīng)用做微服務(wù)拆分和架構(gòu)改造。大家所處行業(yè)不同、自身情況不同、業(yè)務(wù)對(duì)IT的訴求也不同、對(duì)技術(shù)的理解和擁有成本也不一樣,所以說(shuō),這個(gè)問(wèn)題沒(méi)有標(biāo)準(zhǔn)答案,也不會(huì)有標(biāo)準(zhǔn)答案。但是有一些共性的原則是可以梳理借鑒的。一、單體應(yīng)用不是過(guò)街老鼠,微服務(wù)也不一定是濟(jì)世良方首先我們來(lái)看單體應(yīng)用和微服務(wù)的基本特征:微服務(wù)架構(gòu)是采用化整為零的架構(gòu)原則,將應(yīng)用程序表示為細(xì)粒度的、松散耦合的服務(wù)集合。由于整體的復(fù)雜性從整體的功能耦合被轉(zhuǎn)移到了服務(wù)的協(xié)調(diào)級(jí)別上,因此每個(gè)服務(wù)都代表了一種業(yè)務(wù)細(xì)粒度的功能,可以更加容易地去做管理和協(xié)同。而單體架構(gòu)是在統(tǒng)一的功能框架下,將離散的功能點(diǎn)用一定的流程編排到一起,形成一個(gè)不可拆分單元,作為一個(gè)整體進(jìn)行測(cè)試、部署和擴(kuò)展。由于所有組件都有較強(qiáng)的依存關(guān)系,各個(gè)組件很難單獨(dú)運(yùn)行,形成了一榮俱榮一損俱損的格局。單體應(yīng)用是長(zhǎng)期以來(lái),在豎井式IT的大格局下,我們所形成的的程式化思維的產(chǎn)物,在現(xiàn)在微服務(wù)大行其道的形勢(shì)下,我們依然很難說(shuō)單體應(yīng)用一無(wú)是處。比如單體應(yīng)用部署、運(yùn)維、測(cè)試都很簡(jiǎn)便,在業(yè)務(wù)功能邏輯和性能要求沒(méi)有高到一定程度的時(shí)候,單體應(yīng)用幫我解決了很多問(wèn)題。當(dāng)然,隨著后互聯(lián)網(wǎng)時(shí)代的到來(lái),單體應(yīng)用越來(lái)越不適應(yīng)敏捷快速的需求變化,越來(lái)越難以承接大流量和大并發(fā)的考驗(yàn)。從傳統(tǒng)的經(jīng)驗(yàn)來(lái)看,單體應(yīng)用適合用于簡(jiǎn)單業(yè)務(wù)場(chǎng)景簡(jiǎn)單,功能不復(fù)雜,研發(fā)易于管理,還有一些對(duì)性能苛刻的場(chǎng)景也同樣適合用單體應(yīng)用,這可能會(huì)顛覆一部分人的認(rèn)知。另外,如果業(yè)務(wù)的需求非常穩(wěn)定,基本不會(huì)變化,也同樣可以繼續(xù)沿用單體應(yīng)用架構(gòu)。再來(lái)說(shuō)微服務(wù),在現(xiàn)在的需求格局下(所處背景很重要,在單體應(yīng)用大行其道的時(shí)候,沒(méi)人會(huì)懷疑它的正確性),微服務(wù)很顯然易于擴(kuò)展,而且應(yīng)用組件相互獨(dú)立,有清晰的邊界,通訊方式更便捷,對(duì)多種語(yǔ)言都很友好,還有,開(kāi)發(fā)過(guò)程可以被分開(kāi)管理,實(shí)現(xiàn)多團(tuán)隊(duì)協(xié)同,服務(wù)組件之間獨(dú)立部署,易于獨(dú)立部署和維護(hù)。但是隨著微服務(wù)的廣泛應(yīng)用,短板也隨之暴露,比如技術(shù)成本畸高、服務(wù)管理、調(diào)度、測(cè)試、部署、監(jiān)控、排障都變得比較復(fù)雜,就像肥皂一樣,看似簡(jiǎn)單,其實(shí)很難以握持。什么時(shí)候需要考慮引入微服務(wù)呢?如果用單體應(yīng)用能輕松解決的問(wèn)題就沒(méi)必要用微服務(wù)架構(gòu)。一般來(lái)說(shuō),如果發(fā)生以下情況,就可以考慮引入微服務(wù)了:業(yè)務(wù)需求開(kāi)始頻繁變化,功能或者系統(tǒng)交付速度遠(yuǎn)遠(yuǎn)跟不上需求變化;代碼變得非常臃腫,非常龐大,測(cè)試、維護(hù)和修改都變得小心翼翼;訪問(wèn)量激增,對(duì)分布式和彈性擴(kuò)展有較強(qiáng)需求;有大量單體應(yīng)用同時(shí)提供服務(wù),通過(guò)簡(jiǎn)單集成封裝已經(jīng)無(wú)法實(shí)現(xiàn)調(diào)度和管理;原有單體應(yīng)用系統(tǒng)生命周期結(jié)束,需要重新開(kāi)發(fā)。由于微服務(wù)架系需要眾多的基礎(chǔ)設(shè)施平臺(tái)和基礎(chǔ)組件支撐,才能發(fā)揮微服務(wù)架構(gòu)的優(yōu)勢(shì),所以在基礎(chǔ)設(shè)施比較落后的情況下,采用微服務(wù)可能無(wú)法展現(xiàn)其價(jià)值,反而使管理任務(wù)變得更多、更繁瑣。一定得明白,微服務(wù)不是銀彈,這世界上也沒(méi)有銀彈。二、微服務(wù)拆分始終都是讓人頭疼的問(wèn)題單體應(yīng)用的上云的難度系數(shù)是10,那單體應(yīng)用的拆分難度就是100。無(wú)論什么時(shí)候?qū)Υ⒎?wù)拆分都要謹(jǐn)慎,不到萬(wàn)不得已,不要輕舉妄動(dòng)。如果一定要?jiǎng)?,有一條鐵律要謹(jǐn)記,不能為了拆分而拆分,一定得收益,重要性從低到高,分別是業(yè)務(wù)上的、IT管理上的和技術(shù)實(shí)現(xiàn)上的。微服務(wù)的拆分,有兩個(gè)前提條件,一是回答為什么拆分,二是做好充分調(diào)研。為什么拆分,可以從業(yè)務(wù)驅(qū)動(dòng)和技術(shù)驅(qū)動(dòng)兩個(gè)方面回答。理由,就像世上的路,世上本無(wú)路,走得多了就有了路。有了理由,更重要的是準(zhǔn)備工作,首先要搜集業(yè)務(wù)和應(yīng)用的所有信息,明確工作的整體基線和基本原則。拆分時(shí)機(jī)的選擇也是一個(gè)重要的問(wèn)題,隨著業(yè)務(wù)復(fù)雜度的上升單體應(yīng)用的成本和代價(jià)在急劇飆升,但是當(dāng)業(yè)務(wù)發(fā)展期初期,微服務(wù)的整體成本也遠(yuǎn)比單體應(yīng)用高,這個(gè)拐點(diǎn)出現(xiàn)在時(shí)候,每個(gè)客戶(hù)的情況都不一樣,需要仔細(xì)甄別和判斷。微服務(wù)拆分的落地還要提前準(zhǔn)備好配套的基礎(chǔ)設(shè)施,如服務(wù)描述、注冊(cè)中心、服務(wù)框架、服務(wù)監(jiān)控、服務(wù)追蹤、服務(wù)治理等幾大基本組件,以上每個(gè)組件缺一不可,每個(gè)組件展開(kāi)又包括很多技術(shù)門(mén)檻,比如,容器技術(shù)、持續(xù)部署、DevOps等相關(guān)概念,以及人才的儲(chǔ)備和觀念的變化,微服務(wù)不僅僅是技術(shù)的升級(jí),更是開(kāi)發(fā)方式、組織架構(gòu)、開(kāi)發(fā)觀念的轉(zhuǎn)變。微服務(wù)的拆分需要秉持什么原則呢?1.單一性原則:?jiǎn)我环?wù)內(nèi)部功能高內(nèi)聚低耦合,每個(gè)服務(wù)只完成自己職責(zé)內(nèi)的任務(wù),對(duì)于不是自己職責(zé)的功能交給其它服務(wù)來(lái)完成;2.封閉性原則:當(dāng)我們需要改變一個(gè)微服務(wù)的時(shí)候,所有依賴(lài)都在這個(gè)微服務(wù)的組件內(nèi),不需要修改其他微服務(wù);3.服務(wù)自治原則:盡量消除對(duì)其他服務(wù)的強(qiáng)依賴(lài),這樣可以降低溝通成本,提升服務(wù)穩(wěn)定性。服務(wù)通過(guò)標(biāo)準(zhǔn)的接口隔離,隱藏內(nèi)部實(shí)現(xiàn)細(xì)節(jié);4.粒度適中原則:從微服務(wù)這幾個(gè)字來(lái)看,服務(wù)的粒度貌似應(yīng)該足夠小,但是服務(wù)多了也會(huì)帶來(lái)問(wèn)題,就像傳統(tǒng)哲學(xué)中的中庸之道,又好比東家之子,增之一分則太肥,減之一分則太瘦,好難!!5.最小影響性原則:拆分的過(guò)程盡量避免影響產(chǎn)品的日常功能迭代。也就是說(shuō)要一邊做產(chǎn)品功能迭代,一邊完成服務(wù)化拆分;6.可擴(kuò)展性原則:服務(wù)接口的定義要具備擴(kuò)展性,凡是要有留余地,又是傳統(tǒng)哲學(xué)。7.避免雙向依賴(lài)原則:盡量不要有服務(wù)之間的環(huán)形依賴(lài)或雙向依賴(lài),原因是存在這種情況說(shuō)明我們的功能邊界沒(méi)有劃分清楚
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《大腸平滑肌肉瘤》課件
- 熱加工課程設(shè)計(jì)2018
- 綠色環(huán)保課程設(shè)計(jì)
- 自動(dòng)窗簾控制課程設(shè)計(jì)
- 算法導(dǎo)論課程設(shè)計(jì)
- 筑夢(mèng)星空的幼兒園工作總結(jié)
- 寵物行業(yè)寵物美容師工作總結(jié)
- 綜合經(jīng)營(yíng)行業(yè)行政后勤工作總結(jié)
- 紡織行業(yè)會(huì)計(jì)工作總結(jié)
- 移動(dòng)應(yīng)用開(kāi)發(fā)行業(yè)技術(shù)工作總結(jié)
- 火化證明格式
- 機(jī)械原理課程設(shè)計(jì)-自動(dòng)蓋章機(jī)
- e乙二醇精制車(chē)間設(shè)備布置圖
- 行政強(qiáng)制法講座-PPT課件
- 2022年新媒體編輯實(shí)戰(zhàn)教程測(cè)試題及答案(題庫(kù))
- 崗位現(xiàn)場(chǎng)應(yīng)急處置方案卡全套(全套20頁(yè))
- 涼席竹片銑槽機(jī)(課程設(shè)計(jì))
- 高壓線防護(hù)搭設(shè)方案
- 綜合機(jī)械化固體充填采煤技術(shù)要求-編制說(shuō)明
- 十人聯(lián)名推薦表
- 七、分蛋糕博弈
評(píng)論
0/150
提交評(píng)論