我有一个奇怪的szenario:
Webserver / Appserver(Java)向许多不同的卫星系统(在客户站点上)发送请求。由于防火墙规则,只有卫星系统才能启动连接。
我认为模型应该像REQ / REP,但这里REQuester必须绑定,而REPlyer必须连接。
这是否可行且是一个稳定的架构?
有更好的解决方案吗? (我们首先考虑了WebSockets ......)
备注:我们不必在两端都使用Java。准确地说,在客户网站上我们有Delphi,但我们可能会以某种方式弥合它。
答案 0 :(得分:2)
我认为该模型应该是REQ / REP之类的东西,但在这里 REQuester必须绑定,REPlyer必须连接。
这会有问题。当服务器启动连接时,它必须知道所有对等体及其绑定地址。对少数同行来说并不是什么大不了的事,但对于许多不断变化的同行而言,这是一团糟。
由于防火墙规则,只有卫星系统可以启动连接。
如果是这种情况,您的里程将因WebSockets而异;谷歌周围,有很多关于此的信息。
有更好的解决方案吗?
嗯,使用ZeroMq,我们想到一个支持客户端请求启动的解决方案是:
ROUTER
DEALER
。此方法提供双向请求/回复,不阻止(异步),并消除问题中提到的客户端绑定问题。这里,服务器绑定,任何一方都可以发起对话。
我建议在指南中阅读此section,它涵盖扩展的异步请求/回复和消息包络,在使用ROUTER / DEALER套接字时非常重要。