代码之家  ›  专栏  ›  技术社区  ›  Tim unnamed eng

d-bus是中间件ipc吗?

  •  3
  • Tim unnamed eng  · 技术社区  · 6 年前

    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 比较ZrOMQ到D总线,所以我想知道它们是否可以互相替代?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Philip Withnall    6 年前

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

    对于这个答案的其余部分,我假设您所说的d-bus(就像大多数人通常所说的那样)是指协议和 DBUS守护进程 .

    d-bus算不算是面向消息的中间件?

    某种程度上。维基百科说,MOM允许存储、路由或转换消息,以及异步性。d-bus实现了消息队列(但如果对等端未连接到总线,则不会;在这种情况下,错误将返回给发送方)、消息的有限路由(广播或单播)和消息的无转换。异步性由d-bus客户机库和轮询循环提供。

    d总线算不算消息队列?

    某种程度上。如上所述,d-bus在 DBUS守护进程 直到接收端读取它们。如果守护进程重新启动或对等方断开连接,它不会将队列存储在磁盘上。这个 D-Bus specification 定义d-bus生成的消息顺序保证。

    D-Bus是ZeroMQ吗?

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