D-Bus是中间件IPC吗?



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

D-Bus过去不是Linux(即内核)IPC,而是一个额外的IPC。 中间件工控机。但在引进systemd的过程中, D-Bus成为几个Linux发行版的一部分 系统。

维基百科说D-BUS是一个"IPC守护进程"。

D-总线算不算

  • 消息oriented_middleware,或

  • 消息队列?

我听说Zeromq,RabbitMQ,Kafka也是IPC的中间件。 Zeromq、RabbitMQ、Kafka 是否与 D-Bus 处于同一级别(高于 Linux IPC 方法级别)?有些人将ZeroMQ与D-Bus进行了比较,所以我想知道它们是否相互替代?

首先,它有点挑剔,但可能足够相关,值得一提:"D-Bus"是一种协议,通常与消息总线守护程序一起使用(通常dbus-daemon,但已经编写了其他实现)。可以在没有守护程序的情况下使用该协议(用于同一台计算机上的进程之间的点对点消息传递),也可以通过网络或任何您想要的方式使用。该协议仅定义类型系统、消息结构和调用语义。

对于这个答案的其余部分,我将假设"D-Bus"是指(就像大多数人通常所做的那样)协议和dbus-daemon的组合。

D-Bus 算不算面向消息的中间件?

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

D-Bus 算作消息队列吗?

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

D-Bus像ZeroMQ吗?

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

最新更新