【发布时间】: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 混合进程一起工作?
标签: java ipc rmi multiprocessing