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