linux-D-Bus是中间件IPC吗?

https://*.com/a/33888439/156458

D-Bus didn’t used to be a Linux (i.e. kernel) IPC, but an additional
middleware IPC. But in the course of introduction of 07001,
D-Bus became for several Linux distributions a part of the basic
system.

Wikipedia说D-BUS是“ IPC守护程序”.

D-Bus是否算作

> Message-oriented_middleware,或
> Message queue

我听说Zeromq,RabbitMQ,Kafka也是用于IPC的中间件.
Zeromq,RabbitMQ,Kafka是否与D-Bus处于同一级别(高于Linux IPC方法的级别)? Some将ZeroMQ与D-Bus进行了比较,所以我想知道它们是否可以彼此替代?

解决方法:

首先,它有点挑剔,但可能足以提及:“ D-Bus”是一种协议,通常与消息总线守护程序(通常为dbus-daemon一起使用)一起使用.可以在没有守护程序的情况下使用该协议(用于在同一台计算机上的进程之间进行对等消息传递),通过网络或任何所需的协议.该协议仅定义类型系统,消息结构和调用语义.

对于该答案的其余部分,我将假定“ D-Bus”是指(与大多数人一样)协议和dbus-daemon的组合.

Does D-Bus count as message-oriented middleware?

有点.*说,MOM允许存储,路由或转换消息以及异步性. D-Bus实现消息排队(但如果对等点未连接到总线则不执行;在这种情况下,将错误返回给发送方),消息的路由有限(广播或单播),并且不进行消息转换. D-Bus客户端库与轮询循环一起提供了异步性.

Does D-Bus count as a message queue?

有点.如上所述,D-Bus在dbus-daemon中实现消息的有序排队,直到接收方读取它们为止.如果守护程序重新启动或对等方断开连接,则不会在磁盘上存储队列. D-Bus specification定义了D-Bus进行消息排序的保证.

Is D-Bus like ZeroMQ?

我对ZeroMQ不太了解,但是似乎关键的区别在于D-Bus仅用于本地IPC,而ZeroMQ也针对网络上多台计算机之间的IPC.尽管可以通过TCP运行D-Bus,但这不是官方支持的配置,也不是D-Bus真正设计的目的.

上一篇:在Linux编程中通过管道在进程之间发送链表结构的最佳方法是什么


下一篇:Linux namespace浅析