企業資料匯流排(ESB)和註冊服務管理(dubbo)的區別 2015-03-09 08:49:28
分類: Web開發
一、概述
1、什麼是ESB
就是企業資料匯流排的意思,他的核心功能就是相容各種協議介面,可以將資料在各種協議之間進行流轉,並且可以針對資料格式進行編排轉換。(格式轉換、協議轉換、代理、編排、安全控制、監控、不支援高並發,類似於路由器維護著一張路由表進行路由轉寄)
代表性的項目有:JBOSS ESB,Mule,Camel 以及一些其他的esb項目
2、什麼是服務註冊
就是將所有的服務介面(很多時候是hession協議的介面),註冊到一個中心的分布式服務叢集上(你可以考慮成apache的zookeeper服務實現的效果)。各個業務系統直接存取分布式服務尋找需要調用的介面位置,進而調用。(註冊目錄服務、監控、負載平衡、安全控制、分布式強健壯、適用於高並發)
代表性開源項目有:阿里的dubbo,淘寶的HSF(現在不知道是否繼續開源了)
二、雙方特點
1、ESB
ESB一般採用集中式轉寄請求,適合大量異構系統整合,並且壓力不大的情況
但集中式轉寄也是有優勢的,比如調用方用http協議,提供方用rmi協議,轉寄就可以轉換協議,對雙方都透明。另外,在匯流排上還可以執行流程引擎,做服務編排,比如A和B兩個服務經常一起調,就可以編排成服務C,而不用再單獨啟一個服務去做。還有,安全,流控,做起來也更方便。
支援groovy類型的指令碼語言,在匯流排上可以給資料格式做轉換
2、服務註冊管理
採用的是分布式調用,註冊中心只記錄地址資訊,然後直連調用,適合并發及壓力比較大的情況。
對於網站應用程式,大多是垂直業務,直接從資料庫拉資料展示。
三、應用情境
1、ESB
esb最常見的情境是,把系統裡的整合邏輯,單拉出來, 放到esb容器裡來部署,並跟應用系統適配。 這樣讓應用系統變得只有自己的商務邏輯,簡單、輕薄。
劣勢:在所有的服務上增加了一個匯流排作為溝通的渠道。對於較大的並發量會將瓶頸推到ESB匯流排上。很多時候ESB匯流排都採用MQ類的Message Service器來非同步處理緩解壓力
2、服務註冊
淘寶和阿里的各個業務系統提供了很多的介面,這個時候需要統一管理提供個各子業務系統使用,讓各個子業務系統可以通過註冊中心很快找到對應的服務
劣勢:服務編排和協議轉換還是靠各個業務子系統了
四、綜述
1、兩類開源項目側重點不同,ESB側重任務的編排,效能問題可通過異構的方式來進行規避。無法支援特別大的並發
2、服務註冊側重服務的治理,將各個服務顆粒化,各個子業務系統在程式邏輯上完成業務的編排。但是比較實用較大的並發量,因為dubbo類的只是存放服務地址。有zookeeper類的分布式通訊架構,能保證單點的失敗不影響整個系統的業務調用,因為業務介面都是在各個提供服務的子系統中