什么是微服務?微服務架構的優缺點、應用
什么是微服務?
微服務(micro services)這個概念不是新概念,很多公司已經在實踐了,例如亞馬遜、Google、FaceBook、Alibaba。微服務架構模式(Microservices Architecture Pattern)的目的是將大型的、復雜的、長期運行的應用程序構建為一組相互配合的服務,每個服務都可以很容易得局部改良。 Micro這個詞意味著每個服務都應該足夠小,但是,這里的小不能用代碼量來比較,而應該是從業務邏輯上比較——符合SRP原則的才叫微服務。
暫且不討論大小問題,讀者朋友你首先要考慮的是如何解決目前技術團隊遇到的開發問題、部署問題。正是在解決這些問題的過程中,才漸漸總結提煉出了微服務架構模式的概念。
微服務跟SOA有什么區別呢,可以把微服務當做去除了ESB的SOA。ESB是SOA架構中的中心總線,設計圖形應該是星形的,而微服務是去中心化的分布式軟件架構。
微服務架構的優點與缺點
1優點
每個服務足夠內聚,足夠小,代碼容易理解、開發效率提高;服務之間可以獨立部署,微服務架構讓持續部署成為可能;每個服務可以各自進行x擴展和z擴展,而且,每個服務可以根據自己的需要部署到合適的硬件服務器上;容易擴大開發團隊,可以針對每個服務(service)組件開發團隊;提高容錯性(fault isolation),一個服務的內存泄露并不會讓整個系統癱瘓;系統不會被長期限制在某個技術棧上。
2缺點
開發人員要處理分布式系統的復雜性;開發人員要設計服務之間的通信機制,對于需要多個后端服務的user case,要在沒有分布式事務的情況下實現代碼非常困難;涉及多個服務直接的自動化測試也具備相當的挑戰性;服務管理的復雜性,在生產環境中要管理多個不同的服務的實例,這意味著開發團隊需要全局統籌(PS:現在docker的出現適合解決這個問題);應用微服務架構的時機如何把握?對于業務還沒有理清楚、業務數據和處理能力還沒有開始爆發式增長之前的創業公司,不需要考慮微服務架構模式,這時候最重要的是快速開發、快速部署、快速試錯。
- 上一篇: 數據中心可編程技術
- 下一篇:將ESB作為實現基于SOA架構系統集成的具體方法