D-Bus是中间件IPC吗?

时间:2019-01-06 05:53:21

标签: linux ipc message-queue dbus

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

  

D-Bus过去不是Linux(即内核)IPC,而是另外一个   中间件IPC。但是在介绍systemd的过程中,   D-Bus已成为几种Linux发行版的基本组成部分   系统。

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

D-Bus是否计为

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

1 个答案:

答案 0 :(得分:2)

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

在本回答的其余部分中,我假设使用“ D-Bus”是指(与大多数人一样)协议和dbus-daemon的组合。

  

D-Bus是否算作面向消息的中间件?

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

  

D总线是否算作消息队列?

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

  

D-Bus是否像ZeroMQ?

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