我们使用 Java nio AsynchronousServerSocketChannel 和完成处理程序来写入套接字 channel 。
套接字用于在同一系统中运行的两个进程之间进行本地通信。
我们倾向于传输相当大的数据。我们使用缓冲区大小 16384 以分块方式传输数据。通过 UDP 发送不是一种选择。
是否可以采取其他措施来提高套接字 channel 的性能或减少传输的有效负载?
最诚挚的问候, 索拉夫
最佳答案
您可以考虑多种替代方案。我希望您需要实现每一个并使用您的应用程序测试硬件上的实际性能,以便选择正确的一个。
- 您可以尝试调整当前的方法。一些想法:更大的缓冲区、双缓冲区(使用两个套接字,以便写入者始终有一个可用于写入的套接字,而读取器始终可以读取)、仅发送差异(如果您连续发送和更新数据版本)、压缩等。
- 使用完全不同的方法,例如共享内存或内存映射文件。有几个问题有很多好的答案,可以帮助您入门:this和 that .
虽然详细信息取决于您的具体环境,但与当前的套接字实现相比,您可能可以将通信速度提高 10 倍(或者可能显着更高)。
关于java - 使用java套接字传输大量数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43048032/