针对大量小数据的 IPC 建议 [关闭]

Posted

技术标签:

【中文标题】针对大量小数据的 IPC 建议 [关闭]【英文标题】:IPC Suggestion for lots of small data [closed] 【发布时间】:2012-04-17 11:15:06 【问题描述】:

我们将实施一个多进程软件,我们正在寻找合适的 IPC。

事实:

我们将使用 Java(如果遇到时间紧迫的问题,我们将使用 C) 所有进程都在一台 Unix 机器上。 进程每秒相互发送大量(大约 1000 个)小(大约 4k)数据。

您推荐什么 IPC 技术? Web 服务、RMI、TCP 套接字、Unix 套接字、管道……?

【问题讨论】:

@JeremiahWillcock(只是因为它是“作为离题者关闭”列表中的第一个名称,并且只能通知一个用户)或任何人:SE 网络中是否有另一个站点存在此问题可以问吗? (我已经知道它不能在软件推荐中)。我需要问基本相同的问题。 This question 可能很有用,因为它在问同样的事情——除了“小数据”部分——它得到了几个答案。我不确定为什么这个是题外话而那个不是,但是虽然那个有点旧,但它有我在找到这个时正在寻找的信息。 Web 服务是建立在 TCP 之上的,所以我将忽略“web”部分并简单地指出 TCP 是多余的。它为更高层协议提供的大多数服务(流量控制、拥塞控制、按顺序交付、可靠性、进程寻址)都假设一个不可靠的底层通道。在本地连接的情况下,大部分开销都是不必要的。 IP 提供的服务是不必要的,因为您实际上并不需要多个 NIC 进行通信。编写 UNIX 套接字以提供类似 TCP 的功能,而无需实际网络会话的开销。 这将我们带到了 RMI、Unix 套接字、管道和共享内存映射(使用信号量或者——如果你真的很聪明——无锁并发数据结构)。 然而,在我们开始分析这些之前,值得快速检查一下……您是在使用多个进程而不是 JNI,还是它们是多个 Java + C 混合进程一起工作? 【参考方案1】:

以上都可以做到这一点。 1000/s 不算多(即使是 4 KB)

我会将 Active MQ 和 ZeroMQ 添加到列表中。

我会使用https://github.com/peter-lawrey/Java-Chronicle 为什么?因为我写的。 ;) 你可以试试别的。

【讨论】:

以上是关于针对大量小数据的 IPC 建议 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 IPC::Open2 过滤大量数据?

如何在不重复的情况下在进程之间共享大量数据? (IPC)

如何计算/处理大量数据? [关闭]

Android - 将 Parcelable 数据保存到文件中

针对初学者,我建议你学这 3 个 Python AutoEDA 工具包

IPC之消息队列·即时通讯小程序