天天看點

面向服務的體系結構(SOA)——(2)ESB介紹及職責

企業服務總線(Enterprise Service Bus)是SOA的基礎設施,之是以這麼說是因為要達到SOA的目标(增強靈活性)就必須有調用服務的方法,ESB的存在有效的保證了消費者能夠調用供應者提供的服務。網上有很多對ESB不同的了解,其實這取決于實作ESB方式。對于ESB來說具體的實作方式不是固定的,但是核心思想(主要的作用)是一緻的。下面将從如下幾個方面闡述筆者對ESB的了解

資料格式轉換

ESB的存在就是為了解決SOA當中互操作的問題,由于SOA是支援異質的是以對于ESB來說主要的作用就是處理不同平台不同語言之間的互相調用。那麼首先要做的就是資料格式的轉換。在異質的環境中如果隻解決一對一的轉換是飲鸩止渴,必須要為以後新加入的異質系統着想,是以人們盡可能的使得目标資料格式脫離已有的平台及語言,引入一個中間格式然後将不同平台中的API都映射到這種格式上來。對于大多數情況人們選擇的是和平台無關的WebServices技術,于是SOAP也就成為了這種中間格式。對于各大廠商來說誰都不願意被衆人忽略,是以才有了目前大多數技術對WebServices的廣泛支援。

(智能)路由

這裡主要研究的對象是存在ESB當中的消息内容。就像現實生活中的路由一樣,大家都通過但是大家各自的資料不會被發送到他人手中。在ESB中也是同樣的道理,不同優先級的消息,不同類型的消息是需要給予不同處理的。從這個角度說ESB就不單單是一個傳遞消息的通道了,還需要有一套自己的能識别其他服務提供資料方法。至少應該可以區分不同消息的消息頭,隻有這樣才能保證消息準确無誤的被傳遞、處理。關于智能路由的另一個作用就是負載均衡,根據消費者的要求調用資源空閑的服務,這不單單需要上面所說的ESB提供可識别消息的功能,還需要ESB可以判斷提供者的資源占用情況。

其他任務(篇幅所限後面的文章會詳細叙述下面涉及到ESB的各個職責)

下面要叙述的ESB的各個職責都是“提供互操作性”這個核心任務的擴充。很明顯異質系統通過ESB“連接配接”到了一起,并且支援“互操作”那麼原有系統的安全是一個很大的問題。還需要注意的是不同協定提供不同形式的可靠性,例如WebServices中的HTTP協定無法保證消息傳遞的成功(周所周知HTTP協定是無連接配接、無狀态的)。随着SOA的範圍增大,連接配接到ESB上的系統增多時高效的管理服務将成為ESB最棘手的問題。作為整個環境的心髒ESB有責任檢測及記錄哪個消費者調用了哪個服務,以及一個具體的服務調用進行了多長時間。這些對于保證整個環境的良好運轉是非常重要的。