推送机制使用低延迟协议

时间:2012-06-13 07:39:06

标签: java java-ee networking protocols real-time

我是Java EE开发人员。

我想问一下是否有人可以向我推荐一些可以处理大量连续信息的低延迟网络协议。

我正在尝试在两台机器之间实现推送机制,这些机器的数据负载从机器A传输到机器B.

任何建议都会受到欢迎(关于协议和/或推送机制)

我说的是实时系统。

推送将从服务器到客户端(1到多个)。

我想补充一点,传输的每个数据包都很小。但是有大量数据包必须以非常低的延迟并连续传输。

更多要求: 1.客户端设备不在同一个网络中。(所以我猜UDP在这里不相关) 我正在照顾华尔街类型的延迟。如果我丢失了一个数据包,就不需要重新发送它了,因为它可能不再相关了。

感谢

4 个答案:

答案 0 :(得分:0)

您需要套接字连接,就像聊天服务器一样
为此,我使用了XMPP服务器,在整个项目生命周期内与服务器建立了单个套接字连接。服务器发送节和客户端解析它并执行相应的操作。
它非常成功的自定义推送通知,

您可以创建自己的服务器而不是使用XMPP服务器,但如果许多数百万,则应使用XMPP服务器。它最适合实时通知。

如果你想要自己的套接字服务器 然后创建一个套接字服务器并要求客户端连接到该服务器。你必须自己管理服务器上的所有连接。当您想要发送数据时,请使用该连接发送/接收数据。

使用套接字的一个好处是客户端不需要使用相同的语言。

一个很好的起点可能是 http://biese.wordpress.com/2009/06/14/how-to-create-a-simple-java-socket-thread-server/

答案 1 :(得分:0)

这不是一个容易回答的问题,因为延迟有许多部分。如果您构建发布 - 订阅方法,则应该查看多播协议或UDP。

您有什么要求?这些设备是否在同一个扁平网络上,您是否会跨越边界(防火墙,交换机,路由器)?所有这些小事都是大局的一部分。

一旦进入UDP和多播,您将需要处理数据包丢失,数据包重传,消息排序,消息完成以及许多其他需要处理的事情。这就是为什么大多数购买Tibco等产品以及其他一些消息总线技术来解决这个问题的原因。

如果您正在寻找华尔街型延迟,那么您将进入专用路由器/固件的范围。

您也没有真正定义延迟的含义。我收集你的网络延迟,这受到光速的限制(对不起,这是法律!)。

延迟也可以是代码响应某些事件的时间。

编辑1:

IP多播是您最好的选择,因为它可以很好地理解并且可以在LAN上路由,假设您拥有一个不错的网络基础架构。

我看到一个开源项目JGroups看起来有些东西。你可能也想看看演员Remote Actors,我对这两个项目都没有任何经验,所以你的里程可能会有所不同。

对于商业软件,我会看看Tibco。我不确定他们的产品包装了,但他们曾经有过Tib Rendezvous(Tib RV)和一个较老的产品(不记得我头顶的名字),我用它们来处理市场数据。

答案 2 :(得分:0)

关于TIBCO RV,它使用UDP协议,但可以通过所谓的路由器守护程序跨越网络边界,所以这也是可能的。

答案 3 :(得分:0)

通常使用某种message queue来解决此问题。

在Java世界中,有一个名为JMS的消息队列的标准API,有许多实现可供选择,包括商业和开源。我公司最近决定开始使用RabbitMQ,因为它似乎是我们调查的实施中最灵活和最强大的。 HornetQ值得注意的是,它是众所周知的JMS实现中最快的。

还有一些消息队列不是JMS实现;通常,这些更注重性能,而不是强健性等功能。有趣的示例包括OpenDDSZeroMQ

我建议你看看HornetQ。我认为它应该非常接近你需要的东西。

编辑:我刚刚看到你的评论,你不想使用第三方实现,而是自己实现它。那将是个坏主意。不要那样做。使用良好的第三方实施。

相关问题