一、概述
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類的分布式通訊框架,能保證單點的失敗不影響整個系統的業務調用,因為業務接口都是在各個提供服務的子系統中