轉(zhuǎn)自CIO之家
SOA是什么
服務導向式架構(gòu)(SOA)是集成多個較大組件(一般是應用)的一種機制,它們將整體構(gòu)成一個彼此協(xié)作的套件。一般來說,每個組件會從始至終執(zhí)行一塊完整的業(yè)務邏輯,通常包括完成整體大action所需的各種具體任務與功能。組件一般都是松耦合的,但這并非SOA架構(gòu)模式的要求。盡管沒有嚴格要求,SOA一般使用某種集中式管理,比如審查委員會、主架構(gòu)師或架構(gòu)委員會來嚴格定義每個系統(tǒng)組件應當做什么,如何執(zhí)行。相同類型的功能可能會按需在多個組件中分別定義與記錄,而每個組件所使用的語言與工具集有可能是集中確定與統(tǒng)一的,也可能不是。SOA可能使用任何類型的SDLC、組織架構(gòu)或符合這種管理的開發(fā)模型;敏捷、瀑布、看板管理或者一些組合形式都是可用而不違反SOA原則的。
此外,現(xiàn)代化的DevOps和云部署對SOA當然很有效,在這種系統(tǒng)中縮減組件數(shù)量并非必需。但在這些系統(tǒng)中,就算在最好的情況下,一些較大的組件也可能太過復雜而難以實現(xiàn)自動化,在最壞的情況下甚至完全無法實現(xiàn)。
微服務是什么
微服務是一種架構(gòu)設計模式。在微服務架構(gòu)中,業(yè)務邏輯被拆分成一系列小而松散耦合的分布式組件,共同構(gòu)成了較大的應用。每個組件都被稱為微服務,而每個微服務都在整體架構(gòu)中執(zhí)行著單獨的任務,或負責單獨的功能。每個微服務可能會被一個或多個其他微服務調(diào)用,以執(zhí)行較大應用需要完成的具體任務;系統(tǒng)還為任務執(zhí)行——比如搜索或顯示圖片任務,或者其他可能需要多次執(zhí)行的任務提供了統(tǒng)一的解決處理方式,并限制應用內(nèi)不同地方生成或維護相同功能的多個版本。
使用微服務架構(gòu)還提供這樣一種機制:增加新加入開發(fā)者的生產(chǎn)效率,并減少新功能的推廣時長。每個微服務的代碼庫與相關工具集都很有限;開發(fā)者無需再去了解龐大而復雜的系統(tǒng),只需理解自己所做的那部分微服務相關子集,便能貢獻生產(chǎn)力。由于無需考慮應用的現(xiàn)有部分使用了什么語言或工具集,或者較大應用的其他開發(fā)者是否了解這些語言和工具,只需使用當前任務最趁手的工具,因此微服務開發(fā)起來非常迅速。
一句話來談SOA和微服務的區(qū)別,即微服務不再強調(diào)傳統(tǒng)SOA架構(gòu)里面比較重的ESB企業(yè)服務總線,同時SOA的思想進入到單個業(yè)務系統(tǒng)內(nèi)部實現(xiàn)真正的組件化。
(作者:張輝清)
微服務有很多優(yōu)勢,但是僅靠微服務不能解決企業(yè)IT中的所有問題。例如,微服務需要去除ESB,但是現(xiàn)實的IT系統(tǒng)中,大量的應用和服務是基于ESB而不是微服務。集成現(xiàn)有的系統(tǒng),需要一些集成總線。實際情況是,微服務和其它企業(yè)架構(gòu)并存。