基于接收表的ESB研究與設(shè)計
1.3 事務處理
接收表在進行消息傳遞時,應使用事務性通道,把消息放置到輸出通道中屬于同一個事務的一部分。
為了保證事務,接收表路由器在發(fā)送消息m到服務單元后,服務單元應向接收表路由器發(fā)送ack消息。當接收表接收到所有應接收到消息m的服務單元返回的ack消息后,接收表路由器向服務單元發(fā)送commit消息,服務單元接收到commit消息后,才真正接收消息m。這樣就保證所有消息要么全部發(fā)送,要么都不發(fā)送,從而避免了有的服務單元得到消息而有的服務單元沒有得到消息的情況的發(fā)生,保證了整個系統(tǒng)的一致性。
1. 4 服務單元失效處理策略
以在應用ESB集成的系統(tǒng)環(huán)境中,服務單元可能會發(fā)生故障。為提高系統(tǒng)的可用性,采用以下服務單元失效處理策略。
每個服務單元定時向ESB的接受表路由器發(fā)送消息available告知服務處于活動狀態(tài)。每個服務單元保存ESB所集成的所有服務單元的信息表。該列表同時記錄最后一次收到各個節(jié)點available消息的時間。
當ESB的接受表路由器長時間收不到服務單元Ⅳ的available消息,則認為服務單元Ⅳ失效,接受表路由器刪除本地全局路由表中有關(guān)該服務單元的路由信息及其規(guī)則庫。本文引用地址:http://m.butianyuan.cn/article/202595.htm
2 接收表的工作效率
與ESB集成的服務單元中,如果只有較少數(shù)量的服務單元接收消息,則基于內(nèi)容的路由算法,有一定的速度優(yōu)勢,但當有大多數(shù)服務單元接收消息的情況下,由于接收表同時向多個服務單元發(fā)送消息,則接收表路由算法的效率會更高。
在基于內(nèi)容的路由算法中,消息傳遞到服務單元的期望時間與接收此消息的服務單元的數(shù)理呈現(xiàn)線性增長(t=kn,t為從發(fā)送消息到所有消息都被服務單元接收所用的時間,n為服務單元的個數(shù),k為系數(shù))的關(guān)系。而應用接收表的算法中,消息傳遞到服務單元的期望時間與接收此消息的服務單元的數(shù)理呈現(xiàn)近似二次曲線(t2=kn)的關(guān)系。兩種路由算法的效率比較情況,如圖3所示。
3 結(jié)束語
文中研究并設(shè)計了基于接收表的ESB路由算法,并對路由算法的效率、動態(tài)化、事務處理和失效處理等關(guān)鍵問題進行了分析。基于接收表的路由算法提高了消息交互的效率,并且保證了消息的安全性和實時性,是利用ESB進行系統(tǒng)集成的解決方案之一。
評論