摘要:單體應(yīng)用,由于就是一個(gè)項(xiàng)目,所有的功能都是寫在一個(gè)項(xiàng)目中,不可避免的出現(xiàn)項(xiàng)目過度復(fù)雜的情況。
單體應(yīng)用確實(shí)有問題!
最近在研究微服務(wù)架構(gòu),有一點(diǎn)點(diǎn)心得,打算在公眾號(hào)上寫幾篇文章和大家慢慢分享下。
這個(gè)話題有點(diǎn)大,我會(huì)分幾篇文章和大家慢慢說,今天就先來說說傳統(tǒng)的單體應(yīng)用有哪些弊端,正是因?yàn)閱误w應(yīng)用存在的弊端,使得我們不得不考慮發(fā)展微服務(wù)。
人類發(fā)展的歷史就是一個(gè)社會(huì)分工不斷細(xì)化的歷史,從這個(gè)角度來講,微服務(wù)這種將一個(gè)復(fù)雜的大項(xiàng)目拆分為眾多小項(xiàng)目,然后程序員分工合作,共同完成項(xiàng)目,這種協(xié)作方式是符合歷史潮流的。
這是我們站在今天的角度來說的,曾經(jīng)的單體應(yīng)用也是先進(jìn)生產(chǎn)力的代表。
但是,隨著互聯(lián)網(wǎng)的發(fā)展,我們對一個(gè)系統(tǒng)的要求越來越高,單體應(yīng)用已經(jīng)很難適應(yīng)當(dāng)前的開發(fā),因此在回答我們?yōu)槭裁匆褂梦⒎?wù)這個(gè)問題之前,我們有必要來聊一聊單體應(yīng)用目前都面臨哪些問題。
面臨的問題 1.項(xiàng)目過度復(fù)雜你要?jiǎng)?chuàng)建一個(gè)簡單的用戶管理系統(tǒng),二話不說,直接創(chuàng)建 Maven 項(xiàng)目然后開干就完事了,這沒問題,因?yàn)檫@很簡單。
但是你要說想搞一個(gè)淘寶網(wǎng)站,或者你想搞一個(gè)用友 U8 系統(tǒng),那你恐怕就得先慢慢設(shè)計(jì)系統(tǒng)架構(gòu)了。單體應(yīng)用,由于就是一個(gè)項(xiàng)目,所有的功能都是寫在一個(gè)項(xiàng)目中,不可避免的出現(xiàn)項(xiàng)目過度復(fù)雜的情況。而且這種復(fù)雜情況會(huì)不斷惡化。
有的小伙伴可能有這樣的經(jīng)驗(yàn),剛?cè)肼毩艘患夜荆陆邮至艘粋€(gè)項(xiàng)目,上面催的很急,讓你趕快修復(fù)幾個(gè) bug ,項(xiàng)目復(fù)雜,光是實(shí)體類的包就有好幾個(gè) bean、model、pojo 等,一個(gè)項(xiàng)目被很多人經(jīng)手之后,到你手里,早已經(jīng)一團(tuán)亂麻,你小心翼翼盡量不碰觸到已有的功能,終于修完了幾個(gè) bug,搞了倆禮拜,你覺得這個(gè)項(xiàng)目太坑爹了,不想干了,于是接盤俠從你手里接到了一個(gè)復(fù)雜度又上升了一步的項(xiàng)目。
就這樣,一個(gè)原本簡簡單單的單體項(xiàng)目,在變復(fù)雜的路上一去不復(fù)返。
2.開發(fā)速度緩慢單體應(yīng)用開發(fā)速度緩慢,因?yàn)閱误w應(yīng)用復(fù)雜了之后,項(xiàng)目變得異常臃腫而且龐大,每一次編譯構(gòu)建、運(yùn)行以及測試,都需要花費(fèi)大量時(shí)間,而且如果測試有問題,又得從頭來一遍,注意,這里的每一次從頭編譯構(gòu)建等都是整個(gè)項(xiàng)目的從頭編譯構(gòu)建。
即使你可能只要修改某一個(gè)參數(shù),你也得把上面整個(gè)流程走一遍,相當(dāng)于每一次的修改都是牽一發(fā)而動(dòng)全身的操作。
速度沒法快。
3.不易擴(kuò)展項(xiàng)目中不同模塊對計(jì)算機(jī)的性能要求不一樣,例如使用 Redis 來保存了大量的熱點(diǎn)數(shù)據(jù),那么我們希望服務(wù)器的內(nèi)存非常大,另外有一個(gè)模塊涉及到了圖片處理,我們又希望服務(wù)器的 CPU 非常強(qiáng),如果是單體應(yīng)用部署的話,那么這些條件服務(wù)器都要滿足。
4.技術(shù)棧不易擴(kuò)展單體應(yīng)用還有一個(gè)劣勢就是技術(shù)棧不易擴(kuò)展,一旦你選定了某一個(gè)技術(shù)棧來開發(fā)項(xiàng)目,以后很難在技術(shù)棧上做切換。有的公司還會(huì)自己搞一套系統(tǒng),這種在當(dāng)時(shí)看起來好像都沒有啥問題,可是經(jīng)過幾年之后,回頭再看,已經(jīng)很過時(shí)了,很 low 了,當(dāng)初設(shè)計(jì)系統(tǒng)的人可能已經(jīng)離職了,剛?cè)肼毜男率忠膊桓覄?dòng)這個(gè)老古董,只能在這個(gè)老古董上面忍痛開發(fā)。
有的時(shí)候,有一個(gè)服務(wù)需要處理高并發(fā),你很想用 Go 語言來做,可是做不到,沒法引入其他語言。
這些都是單體應(yīng)用的劣勢,如果有微服務(wù),上面這些問題都將得到解決。
曾經(jīng)的優(yōu)勢當(dāng)然,事物都是有兩面性的,單體應(yīng)用也有它自己的優(yōu)勢,例如:
開發(fā)簡單,一個(gè) IDE 就可以快速構(gòu)建出一個(gè)單體應(yīng)用
測試簡單
部署簡單,Tomcat 安裝好之后,應(yīng)用扔上去就行了
集群化部署也很容易,多個(gè) Tomcat + 一個(gè) Nginx 分分鐘就搭建好集群環(huán)境了
這么多優(yōu)勢,還是難掩劣勢。
不過大家在做項(xiàng)目的時(shí)候,還是要結(jié)合實(shí)際情況來選擇,不能因?yàn)槲⒎?wù)厲害,所有項(xiàng)目都是微服務(wù),如果你僅僅只想做一個(gè)用戶的增刪改查,那么很明顯,創(chuàng)建一個(gè)簡單的單體應(yīng)用是最合適的。
好了,本文主要和大家分享了傳統(tǒng)單體應(yīng)用存在的一些問題,正是因?yàn)檫@些問題,我們需要引入微服務(wù),下篇文章,我們就來看看微服務(wù)有哪些優(yōu)勢。
參考資料:
[1] Chris Richardson.微服務(wù)架構(gòu)設(shè)計(jì)模式[M].北京:機(jī)械工業(yè)出版社,2019.
關(guān)注公眾號(hào)【江南一點(diǎn)雨】,專注于 Spring Boot+微服務(wù)以及前后端分離等全棧技術(shù),定期視頻教程分享,關(guān)注后回復(fù) Java ,領(lǐng)取松哥為你精心準(zhǔn)備的 Java 干貨!
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/75632.html
摘要:最近發(fā)現(xiàn)文章老是被竊取,有些平臺(tái)舉報(bào)了還沒有用。最后不了了之,產(chǎn)品很配合,但是內(nèi)驅(qū)力不強(qiáng)。為什么內(nèi)驅(qū)力不強(qiáng),因?yàn)榻o他帶來的收益不夠。所以在千個(gè)團(tuán)隊(duì)中實(shí)行可能有千套不同的方案。最近發(fā)現(xiàn)文章老是被竊取,有些平臺(tái)舉報(bào)了還沒有用。請識(shí)別我的id方丈的寺院。 摘要 DDD領(lǐng)域驅(qū)動(dòng)設(shè)計(jì),起源于2004年著名建模專家Eric Evans發(fā)表的他最具影響力的著名書籍:Domain-Driven Design...
摘要:包括服務(wù)的自動(dòng)化部署,以及鏈路監(jiān)控等并未細(xì)說提及。結(jié)語誠然,整個(gè)服務(wù)架構(gòu)可以輕松應(yīng)對千萬級(jí)并發(fā)。期望,整個(gè)服務(wù)架構(gòu)能伴隨公司繼續(xù)成長壯大。 背景介紹 回顧 ShareSDK,顧名思義,分享的SDK組件,公司基于互聯(lián)網(wǎng),早期主要以ShareSDK起家。今日思來,很幸運(yùn),能陪著ShareSDK一起成長。 showImg(https://segmentfault.com/img/bV0Wo5...
摘要:熔斷機(jī)制為了防止雪崩效應(yīng)事件的發(fā)生,分布式系統(tǒng)采用了熔斷機(jī)制。為了解決這一難題,微服務(wù)架構(gòu)引入了熔斷機(jī)制。由于微服務(wù)系統(tǒng)是分布式系統(tǒng),服務(wù)與服務(wù)之間沒有任何的禍合。 1.2.1 什么是微服務(wù) 按業(yè)務(wù)劃分為一個(gè)獨(dú)立運(yùn)行的程序,即服務(wù)單元。 服務(wù)之間通過 HTTP 協(xié)議相互通信。 自動(dòng)化部署。 可以用不同的編程語言。 可以用不同的存儲(chǔ)技術(shù)。 服務(wù)集中化管理。 微服務(wù)是一個(gè)分布式系統(tǒng)。 ...
摘要:書籍如下面向?qū)ο缶幊讨改希L(fēng)格輕松易懂,比較適合初學(xué)者,原型那塊兒講得透徹,種繼承方式呢。還有另一件事情是,比如發(fā)現(xiàn)自己某個(gè)知識(shí)點(diǎn)不太清楚,可以單獨(dú)去百度。 作者:小不了鏈接:https://zhuanlan.zhihu.com/p/...來源:知乎著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。 鑒于時(shí)不時(shí),有同學(xué)私信問我(老姚,下同)怎么學(xué)前端的問題。這里統(tǒng)一回...
閱讀 2024·2021-09-30 09:47
閱讀 703·2021-09-22 15:43
閱讀 1981·2019-08-30 15:52
閱讀 2431·2019-08-30 15:52
閱讀 2540·2019-08-30 15:44
閱讀 903·2019-08-30 11:10
閱讀 3372·2019-08-29 16:21
閱讀 3296·2019-08-29 12:19