国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

天天吹微服務,單體應用有啥不好?

fish / 2649人閱讀

摘要:單體應用,由于就是一個項目,所有的功能都是寫在一個項目中,不可避免的出現項目過度復雜的情況。

單體應用確實有問題!

最近在研究微服務架構,有一點點心得,打算在公眾號上寫幾篇文章和大家慢慢分享下。

這個話題有點大,我會分幾篇文章和大家慢慢說,今天就先來說說傳統的單體應用有哪些弊端,正是因為單體應用存在的弊端,使得我們不得不考慮發展微服務。

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

這是我們站在今天的角度來說的,曾經的單體應用也是先進生產力的代表。

但是,隨著互聯網的發展,我們對一個系統的要求越來越高,單體應用已經很難適應當前的開發,因此在回答我們為什么要使用微服務這個問題之前,我們有必要來聊一聊單體應用目前都面臨哪些問題。

面臨的問題 1.項目過度復雜

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

但是你要說想搞一個淘寶網站,或者你想搞一個用友 U8 系統,那你恐怕就得先慢慢設計系統架構了。單體應用,由于就是一個項目,所有的功能都是寫在一個項目中,不可避免的出現項目過度復雜的情況。而且這種復雜情況會不斷惡化。

有的小伙伴可能有這樣的經驗,剛入職了一家公司,新接手了一個項目,上面催的很急,讓你趕快修復幾個 bug ,項目復雜,光是實體類的包就有好幾個 bean、model、pojo 等,一個項目被很多人經手之后,到你手里,早已經一團亂麻,你小心翼翼盡量不碰觸到已有的功能,終于修完了幾個 bug,搞了倆禮拜,你覺得這個項目太坑爹了,不想干了,于是接盤俠從你手里接到了一個復雜度又上升了一步的項目。

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

2.開發速度緩慢

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

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

速度沒法快。

3.不易擴展

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

4.技術棧不易擴展

單體應用還有一個劣勢就是技術棧不易擴展,一旦你選定了某一個技術棧來開發項目,以后很難在技術棧上做切換。有的公司還會自己搞一套系統,這種在當時看起來好像都沒有啥問題,可是經過幾年之后,回頭再看,已經很過時了,很 low 了,當初設計系統的人可能已經離職了,剛入職的新手也不敢動這個老古董,只能在這個老古董上面忍痛開發。

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

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

曾經的優勢

當然,事物都是有兩面性的,單體應用也有它自己的優勢,例如:

開發簡單,一個 IDE 就可以快速構建出一個單體應用

測試簡單

部署簡單,Tomcat 安裝好之后,應用扔上去就行了

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

這么多優勢,還是難掩劣勢。

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

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

參考資料:

[1] Chris Richardson.微服務架構設計模式[M].北京:機械工業出版社,2019.

關注公眾號【江南一點雨】,專注于 Spring Boot+微服務以及前后端分離等全棧技術,定期視頻教程分享,關注后回復 Java ,領取松哥為你精心準備的 Java 干貨!

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/75632.html

相關文章

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

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

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

    摘要:趁著吃下午茶,我也來簡單談談對甚至的一些看法。然而放眼現在,其實這些東西,感覺像是入門級別的要求了。說說我自己吧,不可否認,在工作中,我確實是個打雜,說好的架構呢,說還的管理呢,說好的技術支持呢,,到頭來,還是東忙西忙,一無所事。 趁著吃下午茶,我也來簡單談談對 PHP 甚至 PHPer 的一些看法。 況且最好的語言要是沒有優秀的人,那幾本就是扯淡,沒錯,就是你們在大大小小的群經常看到...

    Lin_R 評論0 收藏0
  • 從0到千萬級并發服務架構演化

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

    starsfun 評論0 收藏0
  • 深入理解Spring Cloud與微服務構建【一】 - 1.2微服務

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

    AlexTuan 評論0 收藏0
  • 如何學JavaScript

    摘要:書籍如下面向對象編程指南,風格輕松易懂,比較適合初學者,原型那塊兒講得透徹,種繼承方式呢。還有另一件事情是,比如發現自己某個知識點不太清楚,可以單獨去百度。 作者:小不了鏈接:https://zhuanlan.zhihu.com/p/...來源:知乎著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。 鑒于時不時,有同學私信問我(老姚,下同)怎么學前端的問題。這里統一回...

    light 評論0 收藏0

發表評論

0條評論

fish

|高級講師

TA的文章

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