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