EJB2.0系統中什麼時候使用messaging或者RMI/IIOP (轉)

gugu99發表於2008-04-27
EJB2.0系統中什麼時候使用messaging或者RMI/IIOP (轉)[@more@]

2.0中什麼時候使用messaging或者/IIOP

以下幾條是messaging的優勢,和你需要去使用它的原因:
1.。如果你去完成一個關係型資料庫工作,如
對一個資料庫持久化一個定單,使用messaging更有優勢。
傳送一個訊息到一個二級訊息佇列去被晚些時候處理減輕了
在高峰時刻的主資料庫壓力。在早上負荷較低的早上,當
通訊量比較小時,你能在訊息佇列中取出並處理那個訊息
,並把定單插入到資料庫中。注意這只是在無論他的操
作成功與否都不需要馬上的回答時起作用,如檢測他的信用卡。

2.反應。一個客戶可能不想去被阻塞並去等待一個不存在的
反映。對於返回void值的方法,只可能什麼都不返回或返回一個
異常。如果客戶沒有預料會收到一個異常,為什麼非得要會被阻
塞得到一個反應?messaging允許客戶去處理其他事情,當他被
阻塞得到一個方法的返回。

3.平滑的負載平衡。message-driven beans比session和entity
bean更加平滑的分佈負載。用session和entity bean,一個負載
平衡演算法聰明的猜出哪一個負載更小。用messaging,負載
最小的伺服器自己請求message來得到那個message。

4.請求優先。非同步伺服器能排佇列,設定優先順序,並用與meaasge
到達系統不同的順序來處理它們。有一些訊息系統允許訊息按照
商業規則來被設定優先順序來被排序。舉個例子,在一個軍用坦克
中,如果所有的對系統的請求都被髮送到集中分發佇列來非同步,
那麼開炮的命令被排在100個通訊訊息之後可能帶來災難。在軍用
系統中,在通訊訊息前先處理開火控制和訊息將更有優勢。
一個設定了優先順序的佇列允許在佇列中的訊息重排來計算坦克中
開火控制的緊急性。

5.快速的集合分離的系統。許多已有系統是建立在面向訊息的中
間件之上的,並能夠很容易的用messaging來和你的系統互動。
messaging為商業處理和必須互相通訊的分散式節點系統提供一個
快速開發環境。

6.松耦合系統。messaging可以使應用之間鬆散耦合。應用程式
在他們被編譯時無需知道對方。這使你有“動態發現”的應用程式
,可能在快速變化、面向服務的商業環境下有用。

7.並行處理。messaging是一個在EJB釋出中使用偽執行緒的的方法。
你能啟動一系列訊息並繼續處理,和分散式的啟動許多執行緒一樣。

8.可靠性。messaging被使用即使伺服器當掉。系統級的錯誤(如
資料庫當掉了)通常不會影響操作的成功,因為訊息仍在佇列中
直到系統級的錯誤被解決。

9.多對多通訊。如果你有許多團體一起互相通訊,messaging是
合適的,因為它使許多生產者和消費者互相協作,而RMI/IIOP
是單源單目的的請求模型。

以下是你不應使用messaging的情況:
1.當你不確定操作是否成功。RMI/IIOP系統能丟擲異常,而
message-driven bean不行。

2.當你需要返回結果。RMI/IIOP系統能馬上返回結果,因為
請求是被立即的。相反,你能最終透過messaging返回結果,
不過這很讓人鬱悶:你需要傳送分隔的返回訊息,並用初始
的客戶端來它們。

3.當你的操作是一個更大的一個事務的一部分。當你向目的地
傳送一個訊息,接收到的message-driven bean不能處理其他的
訊息直到一個將來的事務。這對你需要這個操作是一個單獨的,
原子的,要處理其他操作的一個事務的一部分來說是不合適的。
舉個例子,當你操作一個銀行帳戶傳送,這時候使用RMI/IIOP
來向一個銀行帳戶存錢是個壞主意,用messaging來取錢也一樣,
因為取錢可能失敗。

4.當你需要把客戶的安全ID傳給伺服器。因為messaging不把
客戶的安全ID傳給接收的message-driven bean,你不能容易的
保證你的商業操作的安全性。

5.當你關心請求效能。messaging天生的比RMI/IIOP慢,因為
有一個在傳送者和接收者之間的中介人()。

6.當你需要一個強型別,OO的系統。你透過使用messaging
如JMS來傳送訊息。這是一個平滑的API而且不是面相的。
當你想要完成不同操作,伺服器需要開啟的訊息,或
把它濾掉。與之相比,RMI/IIOP讓你基於你想操作的商業操作
來不同的商業方法。這個更直覺;也更容易做編譯時的
語意檢查。

7.當你需要更緊密,更直接的系統。同步釋出比messaging
更直接。你有巨大的自由什麼時候傳送資料型別,和你需要寫
的和messaging比較最少的程式碼量。也更直接。當使用
完全同步的服務,每個客戶端控制執行緒有一個單獨的能被跟
蹤的從客戶端到伺服器的路徑,相反亦然。當系統有時,
需要跟蹤它們的努力也是最小的。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-1003058/,如需轉載,請註明出處,否則將追究法律責任。

相關文章