騰訊T4大牛是如何理解微服務的

什麼是微服務

微服務架構的系統是一個分佈式的系統,按業務進行劃分爲獨立的服務單元,解決單體系統的不足,同時也滿足越來越複雜的業務需求。

一.單體架構

1.1什麼是單體架構

在軟件設計的時候經常提到和使用經典的3層模型,即表現層,業務邏輯層,數據訪問層。雖然在軟件設計中劃分了3層模型,但是對業務場景沒有劃分,一個典型的單體架構就是將所有的業務場景的表現層,業務邏輯層,數據訪問層放在一個工程中最終經過編譯,打包,部署在一臺服務器上。此時服務架構如圖:

騰訊T4大牛是如何理解微服務的

 

1.2單體架構存在的不足

在小型應用的初期,訪問量小的時候這種架構的性價比還是比較高的,開發速度快,成本低,但是隨着業務的發展,邏輯越來越複雜,代碼量越來越大,代碼得可讀性和可維護性越來越低。用戶的增加,訪問量越來越多單體架構的應用併發能力十分有限。

可能會有人想到將單體應用進行集羣部署,並增加負載均衡服務器,再來個緩存服務器和文件服務器,數據庫再搞個讀寫分離。這種架構如圖:

騰訊T4大牛是如何理解微服務的

 

這種架構雖然有一定的併發能力,及應對一定複雜業務,但是依然沒有改變系統爲單體架構的事實。大量的業務必然會有大量的代碼,代碼得可讀性和可維護性依然很差。如果面對海量的用戶,它的併發能力依然不夠。基於以上單體架構系統的不足,提出了微服務架構。

二.微服務

2.1什麼是微服務

說了這麼多現在來看看到底什麼是微服務。微服務最初是由Martin Fowler提出來的他的理解如下:

微服務架構就是將單一程序開發成一個微服務,每個微服務運行在自己的進程中,並使用輕量級的機制通信,通常是HTTP RESTFUL API。這些服務圍繞業務能力來劃分,並通過自動化部署機制來獨立部署。這些服務可以使用不同的編程語言,不同數據庫,以保證最低限度的集中式管理。

總結起來微服務就是將一個單體架構的應用按業務劃分爲一個個的獨立運行的程序即服務,它們之間通過HTTP協議進行通信(也可以採用消息隊列來通信,如RoocketMQ,Kafaka等),可以採用不同的編程語言,使用不同的存儲技術,自動化部署(如Jenkins)減少人爲控制,降低出錯概率。服務數量越多,管理起來越複雜,因此採用集中化管理。例如Eureka,Zookeeper等都是比較常見的服務集中化管理框架。往期:100期面試題彙總

2.2微服務的優勢

  • 將複雜的業務拆分成多個小的業務,每個業務拆分成一個服務,將複雜的問題簡單化。利於分工,降低新人的學習成本。
  • 微服務系統是分佈式系統,業務與業務之間完全解耦,隨着業務的增加可以根據業務再拆分,具有極強的橫向擴展能力。面對搞併發的場景可以將服務集羣化部署,加強系統負載能力。
  • 服務間採用HTTP協議通信,服務與服務之間完全獨立。每個服務可以根據業務場景選取合適的編程語言和數據庫。
  • 微服務每個服務都是獨立部署的,每個服務的修改和部署對其他服務沒有影響。

2.3微服務和SOA的關係

SOA即面向服務的架構,SOA是根據企業服務總線(ESB)模式來整合集成大量單一龐大的系統,微服務可以說是SOA的一種實現,將複雜的業務組件化。但它比ESB實現的SOA更加的輕便敏捷和簡單。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章