成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

天天吹微服務(wù),單體應(yīng)用有啥不好?

fish / 2644人閱讀

摘要:單體應(yīng)用,由于就是一個項目,所有的功能都是寫在一個項目中,不可避免的出現(xiàn)項目過度復(fù)雜的情況。

單體應(yīng)用確實有問題!

最近在研究微服務(wù)架構(gòu),有一點(diǎn)點(diǎn)心得,打算在公眾號上寫幾篇文章和大家慢慢分享下。

這個話題有點(diǎn)大,我會分幾篇文章和大家慢慢說,今天就先來說說傳統(tǒng)的單體應(yīng)用有哪些弊端,正是因為單體應(yīng)用存在的弊端,使得我們不得不考慮發(fā)展微服務(wù)。

人類發(fā)展的歷史就是一個社會分工不斷細(xì)化的歷史,從這個角度來講,微服務(wù)這種將一個復(fù)雜的大項目拆分為眾多小項目,然后程序員分工合作,共同完成項目,這種協(xié)作方式是符合歷史潮流的。

這是我們站在今天的角度來說的,曾經(jīng)的單體應(yīng)用也是先進(jìn)生產(chǎn)力的代表。

但是,隨著互聯(lián)網(wǎng)的發(fā)展,我們對一個系統(tǒng)的要求越來越高,單體應(yīng)用已經(jīng)很難適應(yīng)當(dāng)前的開發(fā),因此在回答我們?yōu)槭裁匆褂梦⒎?wù)這個問題之前,我們有必要來聊一聊單體應(yīng)用目前都面臨哪些問題。

面臨的問題 1.項目過度復(fù)雜

你要創(chuàng)建一個簡單的用戶管理系統(tǒng),二話不說,直接創(chuàng)建 Maven 項目然后開干就完事了,這沒問題,因為這很簡單。

但是你要說想搞一個淘寶網(wǎng)站,或者你想搞一個用友 U8 系統(tǒng),那你恐怕就得先慢慢設(shè)計系統(tǒng)架構(gòu)了。單體應(yīng)用,由于就是一個項目,所有的功能都是寫在一個項目中,不可避免的出現(xiàn)項目過度復(fù)雜的情況。而且這種復(fù)雜情況會不斷惡化。

有的小伙伴可能有這樣的經(jīng)驗,剛?cè)肼毩艘患夜?,新接手了一個項目,上面催的很急,讓你趕快修復(fù)幾個 bug ,項目復(fù)雜,光是實體類的包就有好幾個 bean、model、pojo 等,一個項目被很多人經(jīng)手之后,到你手里,早已經(jīng)一團(tuán)亂麻,你小心翼翼盡量不碰觸到已有的功能,終于修完了幾個 bug,搞了倆禮拜,你覺得這個項目太坑爹了,不想干了,于是接盤俠從你手里接到了一個復(fù)雜度又上升了一步的項目。

就這樣,一個原本簡簡單單的單體項目,在變復(fù)雜的路上一去不復(fù)返。

2.開發(fā)速度緩慢

單體應(yīng)用開發(fā)速度緩慢,因為單體應(yīng)用復(fù)雜了之后,項目變得異常臃腫而且龐大,每一次編譯構(gòu)建、運(yùn)行以及測試,都需要花費(fèi)大量時間,而且如果測試有問題,又得從頭來一遍,注意,這里的每一次從頭編譯構(gòu)建等都是整個項目的從頭編譯構(gòu)建。

即使你可能只要修改某一個參數(shù),你也得把上面整個流程走一遍,相當(dāng)于每一次的修改都是牽一發(fā)而動全身的操作。

速度沒法快。

3.不易擴(kuò)展

項目中不同模塊對計算機(jī)的性能要求不一樣,例如使用 Redis 來保存了大量的熱點(diǎn)數(shù)據(jù),那么我們希望服務(wù)器的內(nèi)存非常大,另外有一個模塊涉及到了圖片處理,我們又希望服務(wù)器的 CPU 非常強(qiáng),如果是單體應(yīng)用部署的話,那么這些條件服務(wù)器都要滿足。

4.技術(shù)棧不易擴(kuò)展

單體應(yīng)用還有一個劣勢就是技術(shù)棧不易擴(kuò)展,一旦你選定了某一個技術(shù)棧來開發(fā)項目,以后很難在技術(shù)棧上做切換。有的公司還會自己搞一套系統(tǒng),這種在當(dāng)時看起來好像都沒有啥問題,可是經(jīng)過幾年之后,回頭再看,已經(jīng)很過時了,很 low 了,當(dāng)初設(shè)計系統(tǒng)的人可能已經(jīng)離職了,剛?cè)肼毜男率忠膊桓覄舆@個老古董,只能在這個老古董上面忍痛開發(fā)。

有的時候,有一個服務(wù)需要處理高并發(fā),你很想用 Go 語言來做,可是做不到,沒法引入其他語言。

這些都是單體應(yīng)用的劣勢,如果有微服務(wù),上面這些問題都將得到解決。

曾經(jīng)的優(yōu)勢

當(dāng)然,事物都是有兩面性的,單體應(yīng)用也有它自己的優(yōu)勢,例如:

開發(fā)簡單,一個 IDE 就可以快速構(gòu)建出一個單體應(yīng)用

測試簡單

部署簡單,Tomcat 安裝好之后,應(yīng)用扔上去就行了

集群化部署也很容易,多個 Tomcat + 一個 Nginx 分分鐘就搭建好集群環(huán)境了

這么多優(yōu)勢,還是難掩劣勢。

不過大家在做項目的時候,還是要結(jié)合實際情況來選擇,不能因為微服務(wù)厲害,所有項目都是微服務(wù),如果你僅僅只想做一個用戶的增刪改查,那么很明顯,創(chuàng)建一個簡單的單體應(yīng)用是最合適的。

好了,本文主要和大家分享了傳統(tǒng)單體應(yīng)用存在的一些問題,正是因為這些問題,我們需要引入微服務(wù),下篇文章,我們就來看看微服務(wù)有哪些優(yōu)勢。

參考資料:

[1] Chris Richardson.微服務(wù)架構(gòu)設(shè)計模式[M].北京:機(jī)械工業(yè)出版社,2019.

關(guān)注公眾號【江南一點(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://systransis.cn/yun/75632.html

相關(guān)文章

  • 可落地的DDD(1)-目標(biāo)討論

    摘要:最近發(fā)現(xiàn)文章老是被竊取,有些平臺舉報了還沒有用。最后不了了之,產(chǎn)品很配合,但是內(nèi)驅(qū)力不強(qiáng)。為什么內(nèi)驅(qū)力不強(qiáng),因為給他帶來的收益不夠。所以在千個團(tuán)隊中實行可能有千套不同的方案。最近發(fā)現(xiàn)文章老是被竊取,有些平臺舉報了還沒有用。請識別我的id方丈的寺院。 摘要 DDD領(lǐng)域驅(qū)動設(shè)計,起源于2004年著名建模專家Eric Evans發(fā)表的他最具影響力的著名書籍:Domain-Driven Design...

    fox_soyoung 評論0 收藏0
  • 我眼中的PHP

    摘要:趁著吃下午茶,我也來簡單談?wù)剬ι踔恋囊恍┛捶?。然而放眼現(xiàn)在,其實這些東西,感覺像是入門級別的要求了。說說我自己吧,不可否認(rèn),在工作中,我確實是個打雜,說好的架構(gòu)呢,說還的管理呢,說好的技術(shù)支持呢,,到頭來,還是東忙西忙,一無所事。 趁著吃下午茶,我也來簡單談?wù)剬?PHP 甚至 PHPer 的一些看法。 況且最好的語言要是沒有優(yōu)秀的人,那幾本就是扯淡,沒錯,就是你們在大大小小的群經(jīng)常看到...

    Lin_R 評論0 收藏0
  • 從0到千萬級并發(fā)服務(wù)架構(gòu)演化

    摘要:包括服務(wù)的自動化部署,以及鏈路監(jiān)控等并未細(xì)說提及。結(jié)語誠然,整個服務(wù)架構(gòu)可以輕松應(yīng)對千萬級并發(fā)。期望,整個服務(wù)架構(gòu)能伴隨公司繼續(xù)成長壯大。 背景介紹 回顧 ShareSDK,顧名思義,分享的SDK組件,公司基于互聯(lián)網(wǎng),早期主要以ShareSDK起家。今日思來,很幸運(yùn),能陪著ShareSDK一起成長。 showImg(https://segmentfault.com/img/bV0Wo5...

    starsfun 評論0 收藏0
  • 深入理解Spring Cloud與微服務(wù)構(gòu)建【一】 - 1.2微服務(wù)

    摘要:熔斷機(jī)制為了防止雪崩效應(yīng)事件的發(fā)生,分布式系統(tǒng)采用了熔斷機(jī)制。為了解決這一難題,微服務(wù)架構(gòu)引入了熔斷機(jī)制。由于微服務(wù)系統(tǒng)是分布式系統(tǒng),服務(wù)與服務(wù)之間沒有任何的禍合。 1.2.1 什么是微服務(wù) 按業(yè)務(wù)劃分為一個獨(dú)立運(yùn)行的程序,即服務(wù)單元。 服務(wù)之間通過 HTTP 協(xié)議相互通信。 自動化部署。 可以用不同的編程語言。 可以用不同的存儲技術(shù)。 服務(wù)集中化管理。 微服務(wù)是一個分布式系統(tǒng)。 ...

    AlexTuan 評論0 收藏0
  • 如何學(xué)JavaScript

    摘要:書籍如下面向?qū)ο缶幊讨改希L(fēng)格輕松易懂,比較適合初學(xué)者,原型那塊兒講得透徹,種繼承方式呢。還有另一件事情是,比如發(fā)現(xiàn)自己某個知識點(diǎn)不太清楚,可以單獨(dú)去百度。 作者:小不了鏈接:https://zhuanlan.zhihu.com/p/...來源:知乎著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。 鑒于時不時,有同學(xué)私信問我(老姚,下同)怎么學(xué)前端的問題。這里統(tǒng)一回...

    light 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<