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