基于接收表的ESB研究與設(shè)計
ESB(Enterprise Service Bus,企業(yè)服務(wù)總線),提供了消息交互的基礎(chǔ)結(jié)構(gòu),使得消息可以傳輸?shù)綄?yīng)的服務(wù)中去。目前大多數(shù)的ESB系統(tǒng)都是采用基于內(nèi)容的路由算法,即根據(jù)消息的內(nèi)容把消息路由到正確的服務(wù)單元。當(dāng)有較多服務(wù)單元接收消息時,此種算法的工作效率將大幅下降,ESB也會承擔(dān)較大的負載,使得整個系統(tǒng)集成的效率降低。常規(guī)的解決方案是把判斷服務(wù)單元是否應(yīng)該接收消息的邏輯分布到各個服務(wù)單元上,但此方法增加了維護的負擔(dān)。為了保持集中控制,可以在每條消息附帶的列表中指定這個消息所面向的接收者。這樣,當(dāng)消息被廣播給所有可能的接收者時,不在接收者列表中的各個接收者可以丟掉該消息。
但采用這種方法的缺點是效率低,每個潛在的接收者必須處理每一條消息。并且,如果要求消息不希望被某些接收者看到,采用這種解決方案是不適合的。例如在發(fā)送某些機密消息時,是不希望無關(guān)接收者收到消息的。
為了解決上述問題,文中提出了基于接收表的ESB路由算法,可以提高消息交互的效率和消息的保密性。
1 接收表路由算法的分析與設(shè)計
在基于接收表的路由算法中,應(yīng)為每個接收者定義一個通道,可以定義一個規(guī)則庫來檢驗輸入的消息,確定需要該消息的接受者列表,并把消息轉(zhuǎn)發(fā)給與列表中接收者關(guān)聯(lián)的所有通道。
1.1 路由設(shè)計
在接收表的算法中,接收表路由器主要由接收者計算邏輯和消息分配器兩個部分組成,消息的傳遞過程,如圖1所示。
接收者計算邏輯首先對消息進行處理,確定此消息應(yīng)該發(fā)送到哪些服務(wù)中去,計算出接收者列表,進而分配器將消息轉(zhuǎn)發(fā)到服務(wù)所對應(yīng)的通道中去,最后服務(wù)接收到此消息。在接收者計算邏輯中,要對消息的內(nèi)容進行分析,并且要結(jié)合服務(wù)接收消息的規(guī)則來計算接收者的列表。
接收者計算邏輯應(yīng)將服務(wù)者與其服務(wù)地址及服務(wù)規(guī)則進行關(guān)聯(lián),可以進行如下表示。
Routing:=ser_id,ser_name,uri,{ser_rule}>
(1)ser_id表示服務(wù)單元的編號;
(2)ser_name表示服務(wù)的名稱;
(3)uri表示服務(wù)的地址;
(4){ser_rule}表示該服務(wù)單元的規(guī)則集。
ser_rule應(yīng)將規(guī)則的名稱和該規(guī)則要求的值進行關(guān)聯(lián),可以進行如下表示:
ser_rule:=rule_name,value>
(1)rule_name表示規(guī)則的名稱;
(2)value表示規(guī)則的對應(yīng)值。
接收者計算邏輯映射為xml文件的形式,并且將服務(wù)的地址和服務(wù)單元要求的規(guī)則進行了描述。
評論