单台计算机上的 java 应用程序和 javascript 应用程序之间的高性能通信 [关闭]
Posted
技术标签:
【中文标题】单台计算机上的 java 应用程序和 javascript 应用程序之间的高性能通信 [关闭]【英文标题】:high performance communication between a java app and javascript application on a single computer [closed] 【发布时间】:2019-08-15 09:38:48 【问题描述】:我们希望将大量数据 (> 1GB) 从 java 程序发送到单台计算机上的 Electron.js 程序(在 javascript 中)。
对于这种通信,什么是性能最高(响应时间最短)的实现? (某种消息队列或共享内存或数据库)
【问题讨论】:
您想分享哪些数据?程序可以在同一个磁盘空间上读写吗?将消息队列和共享磁盘空间结合起来怎么样?就像 A 写在共享空间和消息 B。然后 B 去从共享空间读取...... 【参考方案1】:与 Java 应用程序共享内存很棘手。 (它通常涉及本机代码。)我不了解 Javascript,但我希望这同样困难,甚至更难。
消息队列...将取决于您选择的消息队列技术。典型的消息队列设计用于发送相对较小的消息并可靠地执行。 (而且他们通常依靠数据库来保证可靠性。)
数据库...可靠,但不是为此而设计的。首先,他们确保数据安全地保存在磁盘上,然后才能被另一个事务读取。 (这是 ACID 中的 D)。
我的建议是使用以下之一:
如果您一次性发送数据而不是“消息”,则使用 RAM 文件系统进行文件 I/O。 一个 UNIX 域套接字。 UNIX 管道或等效管道。套接字和管道的问题在于操作系统中的缓冲量有限。这可能会导致上下文切换。如果发送和接收速度不匹配,您很可能会导致一端停止。
最后,无论您如何操作,移动 1GB 数据都将花费大量时间。处理它可能需要更长的时间......除非处理是微不足道的。 (如果它是微不足道的,你最好不要发送它)。因此,无论您如何移动数据,响应时间都不会“很快”。
【讨论】:
以上是关于单台计算机上的 java 应用程序和 javascript 应用程序之间的高性能通信 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章