微服務架構的系統是一個分布式的系統,按業務進行劃分為獨立的服務單元,解決單體系統的不足,同時也滿足越來越複雜的業務需求。
一.單體架構1.1什麼是單體架構在軟件設計的時候經常提到和使用經典的3層模型,即表現層,業務邏輯層,數據訪問層。雖然在軟件設計中劃分了3層模型,但是對業務場景沒有劃分,一個典型的單體架構就是将所有的業務場景的表現層,業務邏輯層,數據訪問層放在一個工程中最終經過編譯,打包,部署在一台服務器上。此時服務架構如圖:
1.2單體架構存在的不足
在小型應用的初期,訪問量小的時候這種架構的性價比還是比較高的,開發速度快,成本低,但是随着業務的發展,邏輯越來越複雜,代碼量越來越大,代碼得可讀性和可維護性越來越低。用戶的增加,訪問量越來越多單體架構的應用并發能力十分有限。
可能會有人想到将單體應用進行集群部署,并增加負載均衡服務器,再來個緩存服務器和文件服務器,數據庫再搞個讀寫分離。這種架構如圖:
這種架構雖然有一定的并發能力,及應對一定複雜業務,但是依然沒有改變系統為單體架構的事實。大量的業務必然會有大量的代碼,代碼得可讀性和可維護性依然很差。如果面對海量的用戶,它的并發能力依然不夠。基于以上單體架構系統的不足,提出了微服務架構。
二.微服務2.1什麼是微服務說了這麼多現在來看看到底什麼是微服務。微服務最初是由Martin Fowler提出來的他的理解如下:
微服務架構就是将單一程序開發成一個微服務,每個微服務運行在自己的進程中,并使用輕量級的機制通信,通常是HTTP RESTFUL API。這些服務圍繞業務能力來劃分,并通過自動化部署機制來獨立部署。這些服務可以使用不同的編程語言,不同數據庫,以保證最低限度的集中式管理。
總結起來微服務就是将一個單體架構的應用按業務劃分為一個個的獨立運行的程序即服務,它們之間通過HTTP協議進行通信(也可以采用消息隊列來通信,如RoocketMQ,Kafaka等),可以采用不同的編程語言,使用不同的存儲技術,自動化部署(如Jenkins)減少人為控制,降低出錯概率。服務數量越多,管理起來越複雜,因此采用集中化管理。例如Eureka,Zookeeper等都是比較常見的服務集中化管理框架。往期:100期面試題彙總
2.2微服務的優勢2.3微服務和SOA的關系
- 将複雜的業務拆分成多個小的業務,每個業務拆分成一個服務,将複雜的問題簡單化。利于分工,降低新人的學習成本。
- 微服務系統是分布式系統,業務與業務之間完全解耦,随着業務的增加可以根據業務再拆分,具有極強的橫向擴展能力。面對搞并發的場景可以将服務集群化部署,加強系統負載能力。
- 服務間采用HTTP協議通信,服務與服務之間完全獨立。每個服務可以根據業務場景選取合适的編程語言和數據庫。
- 微服務每個服務都是獨立部署的,每個服務的修改和部署對其他服務沒有影響。
SOA即面向服務的架構,SOA是根據企業服務總線(ESB)模式來整合集成大量單一龐大的系統,微服務可以說是SOA的一種實現,将複雜的業務組件化。但它比ESB實現的SOA更加的輕便敏捷和簡單。
關于面試小編在這裡還整理了大廠的面試題集合
還有10G的電子書
需要這些資料的小夥伴,可以私信我發送:【電子書】然後自取,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!