[轉載]ESB和註冊服務管理的區別
一、概述
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類的訊息伺服器來非同步處理緩解壓力
2、服務註冊
淘寶和阿里的各個業務系統提供了很多的介面,這個時候需要統一管理提供個各子業務系統使用,讓各個子業務系統可以通過註冊中心很快找到對應的服務
劣勢:服務編排和協議轉換還是靠各個業務子系統了
四、綜述
1、兩類開源專案側重點不同,ESB側重任務的編排,效能問題可通過異構的方式來進行規避。無法支援特別大的併發
2、服務註冊側重服務的治理,將各個服務顆粒化,各個子業務系統在程式邏輯上完成業務的編排。但是比較實用較大的併發量,因為dubbo類的只是存放服務地址。有zookeeper類的分散式通訊框架,能保證單點的失敗不影響整個系統的業務呼叫,因為業務介面都是在各個提供服務的子系統中