微服務(wù)指的是在當(dāng)代軟件開發(fā)生命周期中作為開發(fā)人員工具存在的數(shù)千種獨立的 Web 標(biāo)準(zhǔn)、編程語言、數(shù)據(jù)庫平臺和 Web 服務(wù)器組件。從傳統(tǒng)的角度來看,企業(yè)公司曾經(jīng)專注于面向服務(wù)的架構(gòu) (SOA),它代表了從單個 IT 公司集成的硬件和軟件技術(shù)。 借助微服務(wù),來自獨立開發(fā)公司或開源社區(qū)的云軟件應(yīng)用程序和 Web 服務(wù)器支持?jǐn)?shù)以千計的不同組件 。IT 部門需要一種新的理念來跨超大規(guī)模公共云中的隔離多租戶環(huán)境管理生產(chǎn)中的微服務(wù) 數(shù)據(jù)中心,并已廣泛采用由 服務(wù)網(wǎng)格技術(shù)驅(qū)動的 SDDC 標(biāo)準(zhǔn)的虛擬化解決方案 來解決這個問題。微服務(wù)構(gòu)成了構(gòu)建塊或基本組件、平臺和框架,代碼在云數(shù)據(jù)中心的 Web 服務(wù)器上構(gòu)建和運行。
微服務(wù)的好處
- 快速創(chuàng)新:當(dāng)需要為軟件應(yīng)用程序創(chuàng)建新功能時,企業(yè)和初創(chuàng)公司可以比使用單體架構(gòu)更快地將創(chuàng)新推向市場。使用 Web 和移動應(yīng)用程序的客戶需要新功能。創(chuàng)新技術(shù)通過大眾采用和企業(yè)吸收獲得資金。通過集成新的微服務(wù),IT 專業(yè)人士和初創(chuàng)公司都可以保持在編程和開發(fā)的前沿。
- 更高水平的數(shù)據(jù)中心自動化:開發(fā)人員更喜歡在他們的工作中使用某些平臺或標(biāo)準(zhǔn),這包括對帶有微服務(wù)的 Web/移動應(yīng)用程序中的編程語言和數(shù)據(jù)庫的支持。微服務(wù)通過 API 等腳本化流程進行連接,從而實現(xiàn)更高水平的數(shù)據(jù)中心自動化。
單體架構(gòu)與微服務(wù)架構(gòu)
- 單體架構(gòu):傳統(tǒng)上源自IBM大型機時代和微軟Windows OS壟斷企業(yè)IT時代。
- 微服務(wù):最初由開源社區(qū)、第三方開發(fā)人員和由獨立程序員貢獻(xiàn)代碼的初創(chuàng)企業(yè)發(fā)展而來,這些代碼將擴展正在使用的最流行的 Web 服務(wù)器平臺的基本功能。現(xiàn)在,大多數(shù)主要的 IT 公司都發(fā)布了自己的微服務(wù)和對開源項目的貢獻(xiàn),這些項目的標(biāo)準(zhǔn)在不同的垂直領(lǐng)域和團隊中采用,來自更廣泛的解決方案市場,具有獨特的基礎(chǔ)。微服務(wù)通過云應(yīng)用程序的開源代碼解決方案按照開發(fā)人員創(chuàng)新的相同原則運行,盡管專有許可的微服務(wù)在今天也很常見。
微服務(wù)如何工作?
微服務(wù)主要通過在默認(rèn)操作系統(tǒng)、網(wǎng)絡(luò)或數(shù)據(jù)中心管理平臺提供的功能上增加 Web 服務(wù)器上可用的功能來工作。一些微服務(wù)是 Web 服務(wù)器堆棧擴展,例如編程語言平臺和數(shù)據(jù)庫框架。為了開發(fā) PHP 和 MySQL 應(yīng)用程序,Web 服務(wù)器環(huán)境必須配置 LAMP 平臺支持。基于微服務(wù)的解決方案在很大程度上與 Microsoft、Oracle、IBM 和其他 IT 專業(yè)人士在閉源發(fā)行版中提供的面向服務(wù)的架構(gòu)競爭。企業(yè)公司現(xiàn)在必須支持多種 應(yīng)用程序 用 PHP、Python、Ruby-on-Rails、Java、C++、ASP.net 等在生產(chǎn)環(huán)境中串聯(lián)或同時編寫。在其他情況下,數(shù)據(jù)中心可能通過 多租戶硬件上的虛擬機運行多個數(shù)據(jù)庫框架。必須配置 Web 服務(wù)器以支持流媒體的自定義擴展、API 集成,或通過添加用于分析的專有實用程序。每當(dāng)將所有這些第三方和開源服務(wù)加在一起時,它們就等于生產(chǎn)中典型 Web 服務(wù)器上的數(shù)千個微服務(wù),然后在公共云服務(wù)環(huán)境中與數(shù)百萬超大規(guī)模的 VM 相乘。
微服務(wù)的歷史
使用微服務(wù)這個術(shù)語主要是在 Web 2.0 時代之后開發(fā)的,因為企業(yè) IT 需要一種新的方式來概念化軟件開發(fā)環(huán)境,以反映當(dāng)前的生態(tài)系統(tǒng)和最佳實踐。使用微服務(wù)開發(fā) Web 和移動應(yīng)用程序?qū)е聰?shù)據(jù)中心管理員在企業(yè)運營中支持的復(fù)雜性增加。而不是簡單地與 Oracle、IBM 或 Microsoft 簽訂所有必需的軟件和 數(shù)據(jù)中心解決方案的合同,公司現(xiàn)在必須在數(shù)以百萬計的開源代碼項目中駕馭環(huán)境,這些項目為商業(yè)用途提供企業(yè)級解決方案。許多網(wǎng)絡(luò)標(biāo)準(zhǔn)都有來自不同公司的競爭版本。許多編程語言和數(shù)據(jù)庫在使用中涵蓋相同的功能。每個開發(fā)團隊對工具和編程方法都有自己的偏好。在統(tǒng)一的企業(yè) IT 部門內(nèi)管理云時代的所有這些復(fù)雜性導(dǎo)致需要在全球許多復(fù)雜組織的專業(yè)軟件開發(fā)中支持微服務(wù)。
了解微服務(wù)架構(gòu)
理解微服務(wù)架構(gòu)的最佳方式是描繪 Web 服務(wù)器堆棧中的軟件層。Web 服務(wù)器的操作系統(tǒng)可以是 Windows、Linux 或 BSD。網(wǎng)絡(luò)上有用于數(shù)據(jù)中心管理和負(fù)載平衡的工具。Web 服務(wù)器可以選擇 Apache、IIS、NGINX、Caddy、Tomcat 等。接下來是安裝的編程語言支持層,例如 PHP、ASP.net、Python、Ruby、Perl、Java 和 Go。以下是 MySQL、MSSQL、PostgreSQL 和 MongoDB 等數(shù)據(jù)庫框架的層。用于緩存實用程序(如 Varnish、Redis、CDN 和優(yōu)化實用程序)的另一層。其他支持層包括邊緣服務(wù)器、無服務(wù)器平臺和 AI/ML 集成。在公共云生態(tài)系統(tǒng)中,
面向服務(wù)的架構(gòu) (SOA) 與微服務(wù)
面向服務(wù)的體系結(jié)構(gòu) (SOA) 通常來自單個供應(yīng)商,或者包含一攬子硬件和軟件解決方案,可以針對明確定義的行業(yè)需求進行部署。SOA 通過不同的發(fā)行版或產(chǎn)品模型支持?jǐn)?shù)據(jù)中心、Web 服務(wù)器和堆棧層。SOA 在供應(yīng)商的專有和開源解決方案中都可用。云數(shù)據(jù)中心與內(nèi)部私有數(shù)據(jù)中心以不同的方式管理網(wǎng)絡(luò)設(shè)備和光纖連接。在軟件開發(fā)領(lǐng)域的當(dāng)前狀態(tài)下,創(chuàng)新需要微服務(wù)。即使是最大的公司也需要采用微服務(wù)來支持敏捷編程團隊將新的 Web/移動應(yīng)用程序推向市場,其中產(chǎn)品支持可能包括數(shù)千個品牌或領(lǐng)域。