SOA架構理解
SOA架構理解
理解SOA架構,了解ESB概念,明白SOA與微服務的區別和聯系,了解SOA與熱門技術的結合與應用。
1、 面向服務的架構SOA
SOA(Service Oriented Architecture)即面向服務的架構,是一種架構模型。其中包含多個服務和企業服務總線ESB(Enterprise Services Bus),單個服務只與ESB進行通信或交互,而ESB負責根據用戶(customer)的請求提供相應的數據。
SOA架構最主要的有優點是低耦合,即每一個服務都有自己的“邊界”,服務之間交互使用接口,由ESB進行管理與調用;高度的可拓展性,SOA架構將功能分為一個個互相獨立的服務,這也就提高了代碼的重用性和可拓展性,降低了開發難度和維護強度。
面向服務架構的主要技術和標準:
服務提供者:發布自己的服務,并且對服務請求進行響應。
服務注冊中心:注冊已經發布的web service,對其進行分類,并提供搜索服務。
服務請求者:利用服務中心查找所需要的服務,然后使用該服務。
發布操作:為了使服務可訪問,需要發布服務描述以使服務使用者可以發現它。
查找操作:服務請求者定位服務,方法是查詢服務注冊中心來找到滿足其標準的服務。
綁定操作:在檢索到服務描述之后,服務使用者繼續根據服務描述中的信息來調用服務。
SOAP: 簡單對象訪問協議 (Simple Object Access Protocol)
WSDL: Web服務描述語言 WSDL (Web Services Description Language)
UUDI: 統一描述、發現和集成 (Universal Description,Discovery and Integration)
WSDL用來描述服務;UDDI用來注冊和查找服務;而SOAP,作為傳輸層,用來在消費者和服務提供者之間傳送消息。一個消費者可以在UDDI注冊表(registry)查找服務,取得服務的WSDL描述,然后通過SOAP來調用服務。
ESB(Enterprise Service Bus)企業服務總線:ESB是傳統中間件技術與XML、Web服務等技術結合的產物。ESB提供了網絡中最基本的連接中樞,是構筑企業神經系統的必要元素。
BPM(Business Process Management)業務流程管理:所謂業務流程管理是指根據業務環境的變化,推進人與人之間、人與系統之間的整合及調整經營方法與解決方案的IT工具。
Portal 門戶:門戶是一個基于WEB的應用程序,它提供個性化、單點登錄、不同來源內容整合及存放信息系統的表示層。
WS-I Basic Profile:由Web服務互用性組織(Web Services Interoperability Organization)提供,是SOA服務測試與互用性所需要的核心構件。服務提供者可以使用Basic Profile測試程序來測試服務在不同平臺和技術上的互用性。
J2EE 和 .Net: J2EE和 .NET平臺是開發SOA應用程序常用的平臺,像J2EE這類平臺,不僅為開發者自然而然地參與到SOA中來提供了一個平臺,還通過他們內在的特性,將可擴展性,可靠性,可用性以及性能引入了SOA世界。新的規范,例如 JAXB(Java API for XML Binding),用于將XML文檔定位到Java類;JAXR(Java API for XML Registry)用來規范對UDDI注冊表(registry)的操作;XML-RPC(Java API for XML-based Remote Procedure Call)在J2EE1.4中用來調用遠程服務,這使得開發和部署可移植于標準J2EE容器的Web服務變得容易,與此同時,實現了跨平臺(如 .NET)的服務互用。
2、 企業服務總線ESB
企業服務總線(Enterprise Services Bus)是傳統中間件技術與XML、Web服務等技術結合的產物。ESB提供了網絡中最基本的連接中樞,是構筑企業神經系統的必要元素。為了便于理解,我認為可以把ESB看做一條河流橫在消費者與商戶之間,河上提供大大小小的船只負責根據消費者的命令,從不同的商家拿取貨物并整合,然后送到消費者的手中。事實上,ESB不是一種解決方案,它應該是一種調用服務的通信模塊。
ESB是服務的請求者和服務的提供者的中間組件,它屏蔽了服務的請求者對服務的提供者的服務實現方式的“窺探”,使得服務變成為了一個黑匣子,服務的請求者不必了解或明白服務的提供者如何接收服務請求者的命令,如何解析命令,如何調取數據,如何集成不同格式的數據,如何返回統一格式的數據等。如果沒有總線,服務的請求者不僅需要自己去請求服務,還需要知道服務請求格式以及服務返回數據等問題,這樣不但是不利于管理的點到點服務,還降低了用戶體驗。
3、 SOA與微服務
微服務架構可以看做是SOA的進一步發展,微服務的理念是將業務實現單一功能服務,然后通過Http等協議,將服務根據服務的請求者的請求,之間進行通信和數據交互之類的活動,最后呈現給用戶。微服務架構強調“業務徹底的組件化和服務化”,就像是一臺筆記本電腦的組成一樣,筆記本內部的內存,硬盤等零件是可以獨立更換或升級而不影響整臺電腦的使用一樣。除此之外,微服務的“服務組合”的思想也可以影響到使用微服務架構開發的系統,也就是說,微服務的特性使得使用微服務開發的系統中開發語言不統一,單獨的數據庫,提供給開發者更多的開發自由。
而SOA比較注重于服務的重用性,以及為保證交互的質量而支持大部分消息協議、統一的共享數據庫強大的ESB通信模塊等與微服務架構的不同之處。所以,倘若籠統地描述SOA與微服務之間的區別,可以形容為,微服務是SOA架構去掉了總線。
4、 SOA與云計算
SOA的優勢在于服務的重用性、消息的規范化以及服務敏捷的重構能力,而云計算則的特性是云即服務:基礎設施即服務(Infrastructure As A Service),平臺即服務(Platfrom As A Service),軟件即服務(Software As A Service),同時,云計算有著大批量數據計算的優勢,從關鍵技術來看,SOA的重構,松耦合的優勢作為系統上層,而可以進行大批量計算和數據處理能力的云計算在底層進行數據整合、計算等工作。同時,SOA會降低商業系統開發和維護的成本,而云計算具有按資源(帶寬)收費的經濟效益。
參考文獻及資料
[1] GB/T 7714王磊. SOA與云計算的結合[J]. 信息技術, 2013(07):118-120.
[2] https://blog.csdn.net/lzb348110175/article/details/96738781
[3] http://www.rzrgm.cn/itjeff/p/12074520.html

浙公網安備 33010602011771號