【发布时间】:2016-10-10 19:34:27
【问题描述】:
我有一个让我发疯的问题!无论是设计方面还是技术方面。 我需要收听很多多播地址。我正在监视/收集的每个项目将它们分为 3 组。我已经走上了让一个进程启动 100 个线程的道路。每个线程使用 2 个端口和三个地址/组。 (其中 2 个组在同一个端口上)我为每个端口使用 MulticastChannel,并使用 SELECT 来监视数据。 (我使用过数据报,但发现 NIO MulticastChannel 要好得多)。 无论如何,我看到我可以订阅大约一千个这样的线程的问题,并且数据很好地嗡嗡作响。问题是,过一段时间我会让他们中的一些人停止接收数据。我已向系统 (CentOS) 确认我仍然订阅这些地址,但数据只是停止了。我的线程中有监视器,通过 RTP 标头监视数据丢失和乱序。当我检测到某个线程停止获取数据时,我会执行 DROP/JOIN,然后数据会恢复。
我认为我路径中的路由器正在放弃我的订阅。 我正在竭尽全力编写代码来稳定这个过程。
是否有人曾发送 IGMP 加入网络以保持数据流动?这是可能的,甚至是合理的。
顺便说一句:计算机是 HP DL380 Gen-9,通过 10G 光纤连接到 6509 交换机。
任何关于在哪里寻找的指针都会很有帮助。
请不要索要任何代码示例。
【问题讨论】:
标签: java multithreading network-programming multicast igmp