單體架構還是微服務架構,這是個問題?


(此文章同時發表在本人微信公眾號“dotNET每日精華文章”,歡迎右邊二維碼來關注。)

微服務架構現在越來越流行,那么是不是就意味着單體架構不再成為我們的選擇了呢?個人認為這個要依情況而定。

現在談及微服務架構的文章、演講隨處可見,似乎所有系統的架構都開始盡情擁抱微服務架構,包括筆者前久為一個異構電商平台系統設計的架構也選用了這種風格。然而,我們在選擇微服務架構之前,一定要問一句“你現在面對的系統,微服務架構是一個好的選擇嗎?”。當然,這個問題也是我這幾天在思考的。在我看來,任何互聯網系統的架構發展到后期,隨着復雜度越來越大,那么微服務架構是必然也是最好的選擇。但是,正如《互聯網系統架構的演進》提到的,系統的架構都是從小到大從簡單到復雜演進的,“網站初期的架構一般采用“短平快”的架構思路,架構以簡單清晰、容易開發為第一衡量指標。”

所以,微服務架構是否是一個好的選擇,實際上要看系統的復雜度來決定的。對於這個問題,老馬(Martin Fowler)最近發表的一篇文章《MicroservicePremium》深刻闡述了這一點。他給出了一個很關鍵的圖:

productivity

上圖直觀的說明了單體架構和微服務架構在不同系統復雜度下不同的生產力,以及兩者的對比關系。這篇文章談到的很多具體內容,還需要讀者自己去“閱讀原文”。

綜上,對於那種需要快速為商業模式提供驗證的系統,其功能較少、用戶很低的情況下,單體架構是更好的選擇。不過,為了考慮未來的發展,一些基礎性的功能(比如郵件發送之類)還是可以單獨抽離封裝為微服務的。且在單體架構內部,也需要更清晰的划分功能模塊(盡量不讓它們產生太強的耦合),數據庫設計也可預先考慮未來微服務抽離的情況。

原文鏈接:http://martinfowler.com/bliki/MicroservicePremium.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM