架構模式(微服務架構概述)
一、前言
微服務(MicroServices)是一種架構風格,一個大型復雜軟件應用由多個微服務和前端展示層組成 。系統中的各個微服務可被獨立部署,各個微服務之間是松耦合的 。每個微服務僅關注于完成一件任務并很好地完成該任務 。在所有情況下,每個任務代表著一個小的業務能力 。
以往我們開發應用程序都是單體應用(可以理解為一個部署包包含了項目的所有功能),雖然開發和部署比較方便,但后期隨著業務的不斷增加為了能夠達到響應業務需求,單體應用的開發迭代和性能瓶頸等問題愈發明顯,微服務就是解決此問題的有效手段 。
想要回答為什么要使用微服務架構的問題,首先應該了解一體化架構 。
二、什么是一體化架構
一體化架構顧名思義,將應用各層打成一個包來部署 。為了讓代碼正常工作,一體化應用的所有組件缺一不可 。
以典型的3層傳統web應用為例,該應用由用戶界面、數據庫、服務器端應用組成 。這里的服務器端應用被稱為monolith(一體化或者單體),包含表現、業務層、數據層 。所有代碼都存在于同一個代碼庫中 。為了讓代碼工作起來,它被部署成為一個單元 。任何一個小的改動變化,都需要重新構建和部署整個應用 。
單體應用架構
二、什么是微服務架構
微服務架構是一種架構風格,整個應用被劃分并設計為以業務域為模型的松散耦合的獨立服務 。微服務中的“微”非常具有欺騙性,事實上它沒有規定服務的規模有多小或多大 。
這里的重點是每個獨立服務都有一個業務邊界,可以獨立開發、測試、部署、監控和擴展,甚至可以用不同的編程語言開發它們 。
微服務架構
在基于微服務的架構中,理想情況下每個組件或服務都有自己的數據庫 。沒有集中式數據庫,我們可以根據需要為每個單獨的微服務使用NoSQL、RDBMS或任何其他數據庫,這也是讓微服務真正獨立的原因之一 。
三、一體化架構的問題
或者說是微服務架構所解決的問題 。
3.1難以擴展
一體化架構應用只能通過在負載均衡器后面放置整個應用程序的多個實例來進行水平擴展 。如果應用中的特定服務需要擴展,則沒有簡單的選項 。我們需要完整地擴展應用程序,這顯然會造成不必要的資源浪費 。
相比之下,基于微服務的應用程序允許我們根據需要獨立擴展單個服務 。在上圖中,如果需要縮放服務B,則可以有10個實例,同時保持其他實例,并可以根據需要隨時更改 。
3.2交付時間長
一體化架構在單個應用的任何部分/層中進行的任何更改都需要構建和部署整個應用程序 。個人開發人員還需要下載整個應用程序代碼來修復和測試,而不僅僅是受影響的模塊,這就影響到了持續部署的效率 。
猜你喜歡
- 如何開微店,微店開設的基本流程
- 李幼斌演過哪些電視劇
- 微波爐烤花生 如何用微波爐烤花生?
- 可愛炸了的微信昵稱 微信名女
- 微商應該怎么引流
- 微信可以訂電影票嗎 微信怎么買電影票
- 微信名字女唯美大氣 四字押韻唯美古風網名
- 數碼知識:華為p40微信視頻帶美顏嗎 視頻通話美顏方法
- 開網店能賺錢嗎 開網店一年賺多少錢
- 長期施肥對茶園土壤微生物群落功能多樣性的影響
