2013-11-26 97 views
2

我有一個奇怪的SZENARIO:ZeroMQ REQ/REP其他方式

Web服務器/應用服務器(JAVA)將請求發送到許多不同的衛星系統(客戶網站)。由於防火牆規則,只有衛星系統才能啓動連接。

該模型我認爲應該像REQ/REP,在這裏REQuester必須綁定和REPlyer將不得不連接。

這是可能的和穩定的架構?

有更好的解決方案嗎? (我們首先考慮了WebSocket ...)

備註:我們不必在兩端都使用Java。爲了確切地在客戶網站上,我們有德爾福,但我們可以以某種方式橋接它。

回答

2

模型,我認爲應該是這樣的REQ/REP,但這裏的 請求者必須綁定和REPlyer必須連接。

這會有問題。當服務器啓動連接時,它必須知道所有對等端及其綁定地址。對少數同行來說不是什麼大事,但對於不斷變化的許多同行來說,這是一團糟。

由於防火牆規則,只有衛星系統才能發起連接。

如果是這樣的話,您的里程將隨着WebSocket的不同而變化;谷歌周圍,很多這方面的信息。

有沒有更好的解決方案?

好了,有了ZeroMq,我想到的,以支持客戶端請求發起一個解決方案是這樣的:

  • 服務器與ROUTER
  • 客戶端與DEALER連接結合。

此方法提供雙向請求/回覆,不會阻止(異步)並消除您的問題中提到的客戶端綁定問題。在這裏,服務器綁定,任何一方都可以啓動對話。

我推薦閱讀本指南中的section,它涵蓋了擴展的異步請求/回覆和消息封裝,這在使用ROUTER/DEALER插槽時很重要。