一、概述 1、什么是ESB 就是企業(yè)數(shù)據(jù)總線的意思,他的核心功能就是兼容各種協(xié)議接口,可以將數(shù)據(jù)在各種協(xié)議之間進行流轉,并且可以針對數(shù)據(jù)格式進行編排轉換。(格式轉換、協(xié)議轉換、代理、編排、安全控制、監(jiān)控、不支持高并發(fā),類似于路由器維護著一張路由表進行路由轉發(fā)) 代表性的項目有:JBOSS ESB,Mule,Camel 以及一些其他的esb項目
2、什么是服務注冊 就是將所有的服務接口(很多時候是hession協(xié)議的接口),注冊到一個中心的分布式服務集群上(你可以考慮成apache的zookeeper服務實現(xiàn)的效果)。各個業(yè)務系統(tǒng)直接訪問分布式服務查找需要調用的接口位置,進而調用。(注冊目錄服務、監(jiān)控、負載均衡、安全控制、分布式強健壯、適用于高并發(fā)) 代表性開源項目有:阿里的dubbo,淘寶的HSF(現(xiàn)在不知道是否繼續(xù)開源了)
二、雙方特點 1、ESB ESB一般采用集中式轉發(fā)請求,適合大量異構系統(tǒng)集成,并且壓力不大的情況
但集中式轉發(fā)也是有優(yōu)勢的,比如調用方用http協(xié)議,提供方用rmi協(xié)議,轉發(fā)就可以轉換協(xié)議,對雙方都透明。另外,在總線上還可以執(zhí)行流程引擎,做服務編排,比如A和B兩個服務經(jīng)常一起調,就可以編排成服務C,而不用再單獨啟一個服務去做。還有,安全,流控,做起來也更方便。 支持groovy類型的腳本語言,在總線上可以給數(shù)據(jù)格式做轉換 2、服務注冊管理 采用的是分布式調用,注冊中心只記錄地址信息,然后直連調用,適合并發(fā)及壓力比較大的情況。 對于網(wǎng)站應用,大多是垂直業(yè)務,直接從數(shù)據(jù)庫拉數(shù)據(jù)展示。
三、應用場景 1、ESB esb最常見的場景是,把系統(tǒng)里的集成邏輯,單拉出來, 放到esb容器里來部署,并跟應用系統(tǒng)適配。 這樣讓應用系統(tǒng)變得只有自己的業(yè)務邏輯,簡單、輕薄。 劣勢:在所有的服務上增加了一個總線作為溝通的渠道。對于較大的并發(fā)量會將瓶頸推到ESB總線上。很多時候ESB總線都采用MQ類的消息服務器來異步處理緩解壓力 2、服務注冊 淘寶和阿里的各個業(yè)務系統(tǒng)提供了很多的接口,這個時候需要統(tǒng)一管理提供個各子業(yè)務系統(tǒng)使用,讓各個子業(yè)務系統(tǒng)可以通過注冊中心很快找到對應的服務 劣勢:服務編排和協(xié)議轉換還是靠各個業(yè)務子系統(tǒng)了
四、綜述 1、兩類開源項目側重點不同,ESB側重任務的編排,性能問題可通過異構的方式來進行規(guī)避。無法支持特別大的并發(fā) 2、服務注冊側重服務的治理,將各個服務顆?;鱾€子業(yè)務系統(tǒng)在程序邏輯上完成業(yè)務的編排。但是比較實用較大的并發(fā)量,因為dubbo類的只是存放服務地址。有zookeeper類的分布式通訊框架,能保證單點的失敗不影響整個系統(tǒng)的業(yè)務調用,因為業(yè)務接口都是在各個提供服務的子系統(tǒng)中 |
|