教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

微服務架構是什么?有哪些優(yōu)點和不足?

更新時間:2022年03月29日17時57分 來源:傳智教育 瀏覽次數(shù):

微服務架構定義

微服務架構是一種架構風格和架構思想,它倡導我們在傳統(tǒng)軟件應用架構的基礎上,將系統(tǒng)業(yè)務按照功能拆分為更加細粒度的服務,所拆分的每一個服務都是一個獨立的應用,這些應用對外提供公共的API,可以獨立承擔對外服務的職責,通過此種思想方式所開發(fā)的軟件服務實體就是“微服務”,而圍繞著微服務思想構建的一系列體系結構(包括開發(fā)、測試、部署等),我們可以將它稱之為“微服務架構”。

根據(jù)微服務架構的定義,將傳統(tǒng)單體架構拆分為微服務架構的方式如圖1-4所示。

圖1-4傳統(tǒng)單體架構拆分為微服務架構

從圖1-4中可以看出,微服務架構已將傳統(tǒng)單體架構中的訂單服務、商品服務和用戶服務拆分為了獨立的服務,其中的每一個服務都是一個獨立的應用,可以訪問自己的數(shù)據(jù)庫,這些服務對外提供公共的API,并且服務之間可以相互調(diào)用。

注意:微服務和微服務架構是兩個不同的概念。微服務強調(diào)的是服務的大小,它關注的是某一個點,而微服務架構是一種架構思想,需要從整體上對軟件系統(tǒng)進行全面的考慮。

微服務架構的優(yōu)點

與傳統(tǒng)單體應用架構相比,微服務架構有很多優(yōu)點,具體表現(xiàn)如下:

1.復雜度可控

微服務架構在將應用分解的同時,規(guī)避了原本復雜度無止境的積累。每一個微服務專注于單一功能,并通過定義良好的接口清晰地表述服務邊界。由于體積小、復雜度低,每個微服務可由一個小規(guī)模開發(fā)團隊完全掌控,易于保持高可維護性,并提高了開發(fā)效率。

2.可獨立部署

由于微服務具備獨立的運行進程,所以每個微服務都可以獨立部署。當某個微服務發(fā)生變更時,無需編譯、部署整個應用。由微服務組成的應用相當于具備一系列可并行的發(fā)布流程,使得發(fā)布更加高效,同時降低了對生產(chǎn)環(huán)境所造成的風險,最終縮短應用交付周期。

3.技術選型靈活

微服務架構下,技術的選型是多樣化的。每個團隊都可以根據(jù)自身服務的需求和行業(yè)發(fā)展的現(xiàn)狀,自由選擇最適合的技術。由于每個微服務相對簡單,當需要對技術進行升級時,所面臨的風險較低,甚至完全重構一個微服務也是可行并容易的。

4.易于容錯

當架構中的某一組件發(fā)生故障時,在單一進程的傳統(tǒng)架構下,故障很有可能在進程內(nèi)擴散,導致整個應用不可用。在微服務架構下,故障會被隔離在單個服務中。若設計良好,其他服務可通過重試、平穩(wěn)退化等機制實現(xiàn)應用層面的容錯。

5.易于擴展

單個服務應用也可以實現(xiàn)橫向擴展,這種擴展可以通過將整個應用完整的復制到不同的節(jié)點中實現(xiàn)。當應用的不同組件在擴展需求上存在差異時,微服務架構便體現(xiàn)出其靈活性,因為每個服務可以根據(jù)實際需求獨立進行擴展。

6.功能特定

每個微服務有自己的業(yè)務邏輯和適配器,并且一個微服務一般只完成某個特定的功能,例如商品服務只管理商品、客戶服務只管理客戶等。這樣開發(fā)人員可以完全的專注于某一個特定功能的開發(fā),而不用過多的考慮其他,從而提高開發(fā)效率。

除了上述幾點好處外,微服務架構還有很多好處,由于篇幅有限,這里就不一一列舉了,但從微服務架構的好處可以看出,使用微服務可以很好的解決傳統(tǒng)單體架構中的問題。

微服務架構的不足

微服務架構除了有上面所講的各種優(yōu)點外,還存在著一些不足,這些不足的具體表現(xiàn)如下:

1.開發(fā)人員必須處理創(chuàng)建分布式系統(tǒng)的復雜性

①開發(fā)工具(或IDE)是面向構建傳統(tǒng)的單體應用程序的,不為開發(fā)分布式應用程序提供全面功能上的支持。

②測試更加困難。在微服務架構中,服務數(shù)量眾多,每個服務都是獨立的業(yè)務單元,服務主要通過接口進行交互,如何保證依賴的正常,是測試面臨的主要挑戰(zhàn)。

③開發(fā)人員必須實現(xiàn)服務間的通信機制。

④實現(xiàn)用例跨多個服務時,需要面對使用分布式事務管理的困難。

⑤l實現(xiàn)跨多個服務的用例,需要團隊之間進行仔細的協(xié)調(diào)。

2.部署的復雜性

在部署和管理時,由許多不同服務類型組成的系統(tǒng)的操作比較復雜,這將要求開發(fā)、測試及運維人員有相應的技術水平。

3.增加內(nèi)存消耗

微服務架構用多個服務實例取代了1個單體應用程序實例,如果每個服務都運行在自己的JVM中,那么有多少個服務實例,就會有多少個實例在運行時的內(nèi)存開銷。

微服務架構與SOA的區(qū)別

通過前3個小節(jié)的學習,相信有些讀者對微服務架構已經(jīng)有了一定的了解。在學完后,細心的讀者可能會有這樣一個疑問,微服務架構與SOA都是對單體架構的拆分,那么他們有什么不同呢?下面通過一個表格對兩者的區(qū)別進行對比,如表1-1所示。

表1-1微服務架構與SOA的區(qū)別






猜你喜歡:

怎樣搭建微服務架構?

微服務架構有什么優(yōu)勢?

哪些公司適合用微服務架構?如何將系統(tǒng)拆分為微服務?

史上最全面微服務教程:SpringCloud+Elasticsearch+分布式系統(tǒng)

傳智教育Java培訓課程

0 分享到:
和我們在線交談!