FDBus(Fast Distributed Bus)是一款高性能、跨平台、分布式的进程间通信(IPC)与远程过程调用(RPC)框架,核心优势是低延迟、高吞吐、原生支持跨主机组网,广泛用于车载、嵌入式、IoT 与微服务场景。


一、核心定位与设计目标

  • 定位:替代传统 IPC(如 D-Bus、Socket、共享内存),提供统一、高效、可扩展的通信层,同时支持本地 IPC 与跨主机分布式通信。

  • 核心目标

    • 极致性能:低延迟、高吞吐量,适合实时 / 高并发场景。
    • 跨平台:Linux、Android、QNX、Windows 等。
    • 分布式:原生支持多主机组网,服务透明寻址。
    • 易用性:IDL 定义 + 代码生成,屏蔽底层细节。
    • 可靠性:连接管理、心跳、重连、服务发现。

二、核心概念(借鉴 D-Bus 并优化)

  1. 服务地址(Bus Address)

    • 格式:fdb://<host>:<port>,本地可用fdb://localhost
  2. 服务名称(Service Name)

    • 反向域名格式(如com.example.MyService),用于服务发现与寻址
  3. 对象路径(Object Path)

    • 类文件系统路径(如/sensor/temperature),定位服务内具体对象。
  4. 接口(Interface)

    • 方法、信号、属性的集合,定义服务能力。
  5. 成员(Members)

    • 方法(Method):请求 / 响应(同步 / 异步)。
    • 信号(Signal):发布 / 订阅(Pub/Sub),支持主题过滤。
    • 属性(Property):可读 / 可写状态,支持通知。
  6. 名称服务器(Name Server)

    • 核心组件:服务注册、发现、地址映射,支持多实例高可用。

三、通信模式

1. 请求 / 响应(Req/Resp)

  • 客户端调用服务方法,服务返回结果。
  • 支持同步阻塞异步非阻塞,适合 RPC 场景。

2. 发布 / 订阅(Pub/Sub)

  • 服务发布信号(主题),客户端订阅接收。
  • 一对多广播,低延迟事件通知,适合状态同步、告警。

3. 底层传输

  • 本地 IPC:Unix 域套接字、共享内存(高性能)。
  • 跨主机:TCP(可靠)、UDP(组播发现)。
  • 序列化:Google Protobuf(高效二进制)。

四、核心技术特性

  1. IDL 与代码生成

    • 用 Protobuf IDL 定义接口,自动生成 C++/Python 等桩代码(Stub/Skeleton),大幅简化开发。
  2. 异步与事件驱动

    • 基于非阻塞 I/O 与事件循环,单线程处理高并发,避免线程切换开销。
  3. 服务发现与动态组网

    • 名称服务器自动管理服务上线 / 下线,客户端透明寻址,支持动态扩容。
  4. 可靠性保障

    • 心跳、自动重连、消息确认、流量控制、超时机制。
  5. 安全机制

    • 访问控制、权限策略、加密传输(可选)。
  6. 轻量与低开销

    • 无中心总线瓶颈,资源占用小,适合嵌入式与实时系统。

五、与 D-Bus 的关键区别

表格

特性 FDBus D-Bus
性能 低延迟、高吞吐,适合实时场景 通用场景,性能一般
分布式 原生跨主机,透明组网 主要本地 IPC,跨机复杂
传输 Unix 域、TCP、共享内存、Protobuf Unix 域、TCP、DBus 协议
模型 面向对象 + Pub/Sub,主题灵活 面向对象,信号无主题
适用 车载、嵌入式、IoT、微服务 桌面、系统服务

六、典型应用场景

  • 车载系统:座舱、自动驾驶、车联网模块间低延迟通信。
  • 嵌入式 / IoT:资源受限设备间高效 IPC 与远程控制。
  • 微服务:服务间 RPC、事件总线、服务发现。
  • 实时系统:工业控制、机器人、流媒体传输。
分类: FdBus

0 条评论

发表回复

您的电子邮箱地址不会被公开。