欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談一下單體架構的缺點是什么

 更新時間:2023年04月25日 11:21:45   作者:Blue92120  
這篇文章主要介紹了單體架構的缺點是什么,通常我們所使用的傳統(tǒng)單體應用架構都是模塊化的設計邏輯,程序在編寫完成后會被打包并部署為一個具體的應用,而應用的格式則依賴于相應的應用語言和框架,需要的朋友可以參考下

隨著互聯(lián)網(wǎng)技術的發(fā)展,傳統(tǒng)的應用架構已滿足不了實際需求,微服務架構就隨之產(chǎn)生。那么傳統(tǒng)應用架構到底出了什么問題呢?又如何解決?接下來我們將從傳統(tǒng)單體架構的問題開始,對為什么需要微服務架構進行詳細講解。

傳統(tǒng)單體應用架構的問題

通常我們所使用的傳統(tǒng)單體應用架構都是模塊化的設計邏輯,程序在編寫完成后會被打包并部署為一個具體的應用,而應用的格式則依賴于相應的應用語言和框架。

例如,在網(wǎng)上商城系統(tǒng)中,JavaWeb工程通常會被打成WA R包部署在Web服務器上,而普通Java工程會以JAR包的形式包含在WA R包中,如圖1-1所示。

早期單體架構圖

上圖中的這種應用開發(fā)風格很常見,它易于開發(fā)和調試,并且易于部署。在用戶量不多時,此種架構方式完全可以滿足需求,但隨著用戶人數(shù)的增加,一臺機器已經(jīng)滿足不了系統(tǒng)的負載,此時我們就會考慮系統(tǒng)的水平擴展。通常情況下,我們只需要增加服務器的數(shù)量,并將打包好的應用拷貝到不同服務器(如Tomcat),然后通過負載均衡器(如Apache、Nginx)就可以輕松實現(xiàn)應用的水平擴展,如圖所示。

在早期,單體架構的這種擴展方式可以很好的滿足使用需求,但隨著時間的推移,這種方式就會產(chǎn)生很多問題,具體表現(xiàn)如下:

1.應用復雜度增加,更新、維護困難

一個簡單的應用會隨著時間的推移而逐漸變大。一旦應用變的龐大而又復雜,那么開發(fā)團隊將會面臨很多問題,其中最主要問題就是這個應用太復雜,以至于任何單個開發(fā)者都很難進行二次開發(fā)或維護。

2.易造成系統(tǒng)資源浪費

雖然使用負載均衡的方式可以對項目中的服務容量進行水平擴展,但由于傳統(tǒng)單體架構的代碼中只有一個包含所有功能的WA R包,所以在對服務容量擴容時,只能選擇重復的部署這個WA R包來擴展服務能力,而不僅僅是擴展了所需的服務。這樣導致其他不需要擴展的服務也進行了相應的擴展,但這種擴展是不需要的,因此這種方式會極大的浪費資源。

3.影響開發(fā)效率

當一個應用越大時,啟動時間就會越長。開發(fā)和調試的過程中,如果有很大一部分時間都要在等待中渡過,那么必然會對開發(fā)效率有極大的影響。

4.應用可靠性低

傳統(tǒng)單體應用架構在運行時的可靠性比較低,當所有模塊都運行在一個進程中時,如果任何一個模塊中出現(xiàn)了一個Bug,可能會導致整個進程崩潰,從而影響到整個應用。

5.不利于技術的更新

傳統(tǒng)單體應用架構一旦選定使用某些技術,則后期的開發(fā)和擴展將在這些技術的基礎上實現(xiàn)。如果需要更改某種技術,則可能需要將整個應用全部重新開發(fā),這種成本是非常大的。當然,傳統(tǒng)單體應用架構的問題還不只這些,但出現(xiàn)這些問題的根本原因可以說就是由于傳統(tǒng)單體架構中一個WA R包內包含了系統(tǒng)的所有服務功能所導致的。隨著業(yè)務變的越來越多,問題也就越來越多。

如何解決傳統(tǒng)應用架構的問題

針對傳統(tǒng)單體架構的問題,大部分企業(yè)通過SOA(Service-Oriented Architecture,面向服務的架構)來解決上述問題。

SOA的思路是把應用中相近的功能聚合到一起,以服務的形式提供出去,因此基于SOA架構的應用可以理解為一批服務的組合。

同樣以網(wǎng)上商城為例,一個簡單的SOA系統(tǒng)如圖1-3所示。

SOA系統(tǒng)

從上圖可以看出,SOA將原來的單體架構按照功能細分為不同的子系統(tǒng),然后再由各個子系統(tǒng)依賴服務中間件(這里指企業(yè)服務總線Enterprise Service Bus,簡稱ESB)來調用所需服務。

使用SOA可以將系統(tǒng)切分成多個組件服務,這種通過多個組件服務來完成請求的方式有很多好處,具體如下:

l把項目拆分成若干個子項目,不同的團隊可以負責不同的子項目,從而提高開發(fā)效率;

l把模塊拆分,使用接口通信,降低了模塊之間的耦合度;

l為企業(yè)的現(xiàn)有資源帶來了更好的重用性;l能夠在最新的和現(xiàn)有的應用之上創(chuàng)建應用;

l能夠使客戶或服務消費者免予服務實現(xiàn)的改變所帶來的影響;

l能夠升級單個服務或服務消費者而無需重寫整個應用,也無需保留已經(jīng)不再適用于新需求的現(xiàn)有系統(tǒng)。

雖然使用SOA解決了單體架構中的問題,但多數(shù)情況下,SOA中相互獨立的服務仍然會部署在同一個運行環(huán)境中(類似于一個Tomcat實例下,運行了很多web應用)。和單體架構類似,隨著業(yè)務功能的增多,SOA的服務會變得越來越復雜。本質上看,單體架構的問題并沒有因為使用SOA而變的更好。

針對單體架構和SOA的問題,許多公司(如Amazon、eBay和NetFlix)通過采用微處理結構模式解決了系統(tǒng)架構中的問題。其思路不是開發(fā)一個巨大的單體式的應用,而是將應用分解為小的、互相連接的微服務。隨著微服務的使用,微服務架構的思想也隨之產(chǎn)生。

到此這篇關于淺談一下單體架構的缺點是什么的文章就介紹到這了,更多相關單體架構的缺點內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • java自定義異常打印內容詳解

    java自定義異常打印內容詳解

    這篇文章主要為大家詳細介紹了java自定義異常打印內容的相關資料,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • JavaScript中棧和隊列應用詳情

    JavaScript中棧和隊列應用詳情

    這篇文章主要介紹了JavaScript中棧和隊列應用詳情,棧如果用數(shù)組模擬的話是類似于一個U形桶狀堆??臻g,文章圍繞制圖展開詳細的內容展開更多相關內容,需要的小伙伴可以參考一下
    2022-06-06
  • Java真題實練掌握哈希表的使用

    Java真題實練掌握哈希表的使用

    哈希表是一種根據(jù)關鍵碼去尋找值的數(shù)據(jù)映射結構,該結構通過把關鍵碼映射的位置去尋找存放值的地方,說起來可能感覺有點復雜,我想我舉個例子你就會明白了,最典型的的例子就是字典
    2022-07-07
  • idea項目debug模式啟動,斷點失效,斷點紅點內無對勾問題及解決

    idea項目debug模式啟動,斷點失效,斷點紅點內無對勾問題及解決

    這篇文章主要介紹了idea項目debug模式啟動,斷點失效,斷點紅點內無對勾問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Java 使用Socket正確讀取數(shù)據(jù)姿勢

    Java 使用Socket正確讀取數(shù)據(jù)姿勢

    這篇文章主要介紹了Java 使用Socket正確讀取數(shù)據(jù)姿勢,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • hibernate 配置數(shù)據(jù)庫方言的實現(xiàn)方法

    hibernate 配置數(shù)據(jù)庫方言的實現(xiàn)方法

    這篇文章主要介紹了hibernate 配置數(shù)據(jù)庫方言的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-05-05
  • Java序列化JSON丟失精度問題的解決方法(修復Long類型太長)

    Java序列化JSON丟失精度問題的解決方法(修復Long類型太長)

    這篇文章主要給大家介紹了關于Java序列化JSON丟失精度問題的解決方法,修復Long類型太長的相關資料,文中通過實例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2022-03-03
  • Spring Security獲取用戶認證信息的實現(xiàn)流程

    Spring Security獲取用戶認證信息的實現(xiàn)流程

    Spring Security是一個能夠為基于Spring的企業(yè)應用系統(tǒng)提供聲明式的安全訪問控制解決方案的安全框架。它提供了一組可以在Spring應用上下文中配置的Bean,充分利用了Spring IoC,DI和AOP功能,為應用系統(tǒng)提供聲明式的安全訪問控制功能
    2022-12-12
  • java實現(xiàn)的各種排序算法代碼示例

    java實現(xiàn)的各種排序算法代碼示例

    這篇文章主要介紹了java實現(xiàn)的各種排序算法代碼示例,比較全面,代碼親測可用,如有不足之處,歡迎留言指出。
    2017-10-10
  • JAVA錯誤:'無效目標發(fā)行版?17'的解決方案

    JAVA錯誤:'無效目標發(fā)行版?17'的解決方案

    這篇文章主要給大家介紹了關于JAVA錯誤:'無效目標發(fā)行版?17'的解決方案,文中通過圖文介紹的非常詳細,對大家學習或使用java具有一的的參考學習價值,需要的朋友可以參考下
    2022-09-09

最新評論