高性能服务器的Java Nio或Java IO



我在Java Nio或旧的Java I/O阻止插座之间进行了挣扎一段时间,用于我正在开发的服务器。

我认为Java Nio会更好,因为它将拥有大量客户端,并且客户端将保持连接,以便服务器可以在可用时推动数据。

所以这使我认为Java阻塞I/O会过高,因为线程的数量会很高。

您对这种情况有何看法?

,如果预期向客户端的一条消息的推动需要很长时间,则只有阻止I/O的问题。仅让客户端连接并不需要每个客户端一个线程。实际上,我现在正在写这样的软件。您只需要在特定时间点上引起的同时推动消息。这通常不会很高。考虑将消息推向等待时间以使消息到达所需的时间比率。将同时客户端的数量乘以此数字,您的平均活动线程计数。

您将维护一组所有开放输出流,每个客户端一个。他们只会坐在记忆中,直到需要将消息推向客户端。那时,您需要一个线程来处理该消息。如果在推动消息时,您想处理另一个事件并将消息推向另一个客户端,则需要第二个线程,但是一旦完成了第一个推动,该线程就会返回到可用的可用池线程。

我还可以建议Actor模型实施以协调您的消息推动。演员模型是此问题的确切匹配。

相关内容

最新更新