我是一名Java EE开发人员。
我想问一下,是否有人可以向我推荐可以处理大量连续信息的低延迟网络协议。
我正在尝试实现两台机器之间的推送机制,两台机器之间有大量数据从机器A传输到机器B。
任何建议都会更受欢迎(关于协议和/或推送机制)
我说的是实时系统。
推送将从服务器推送到客户端(一对多)。
我想补充说,每个正在传输的数据包都很小。但是有大量的数据包必须以非常低的延迟和连续的方式传输。
更多要求: 1.客户端设备不在同一网络中。(所以我猜UDP在这里不会相关)我正在关注华尔街类型的延迟。如果我丢失了一个包,它就不需要重新发送了,因为它可能不再相关。
谢谢
发布于 2012-06-13 15:58:15
你需要套接字连接,就像聊天服务器一样。
为此,我使用了XMPP服务器,在整个项目生命周期中都与服务器建立了单套接字连接。服务器发送节,客户端对其进行解析,并执行相应的操作。
它对自定义推送通知非常成功,
您可以创建自己的服务器,而不是使用XMPP服务器,但如果有数百万台服务器,您应该使用XMPP服务器。它最适合实时通知。
如果您想要自己的socket服务器,那么创建一个socket服务器和连接到该服务器所需的客户端。你必须自己管理服务器上的所有连接。当您想要发送数据时,使用该连接来发送/接收数据。
使用套接字的一个好处是客户端不需要使用相同的语言。
一个很好的起点是http://biese.wordpress.com/2009/06/14/how-to-create-a-simple-java-socket-thread-server/
发布于 2012-06-14 01:09:37
这不是一个容易回答的问题,因为延迟有很多部分。如果您构建的是发布-订阅方法,则应该考虑多播协议或UDP。
你的要求是什么?这些设备是否在同一平面网络中,您是否会跨越边界(防火墙、交换机、路由器)?所有这些小事情都是大局的一部分。
一旦你进入UDP和组播,你将需要处理数据包丢失,数据包重新传输,消息排序,消息完成和许多其他需要处理的事情。这就是为什么大多数人会购买像Tibco这样的产品和其他一些消息总线技术来解决这个问题。
如果你在寻找华尔街类型的延迟,你就进入了专用路由器/固件的界限。
你也没有真正定义你所说的延迟。我猜你看到的是网络延迟,它受到光速的限制(对不起,这是定律!)远距离的。
延迟也可以是代码响应某些事件的时间。
编辑1:
IP多播是您最好的选择,因为它被很好地理解,并且可以跨lan路由,前提是您有一个不错的网络基础设施。
我看到了一个开源项目JGroups,它看起来有一些东西。你可能也想看看Actors Remote Actors,我对这两个项目都没有任何经验,所以你的进度可能会有所不同。
对于商业软件,我会考虑Tibco。我不再确定他们的产品包装,但他们曾经有Tib Rendezvous (Tib RV)和一个较旧的产品(我想不起名字了),我用它们来处理市场数据。
发布于 2012-06-22 23:34:54
关于TIBCO RV,它使用UDP协议,但可以通过所谓的路由器守护程序跨越网络边界,因此这也是可能的。
https://stackoverflow.com/questions/11010217
复制相似问题