FDBus(Fast Distributed Bus)是一款高性能、跨平台、分布式的进程间通信(IPC)与远程过程调用(RPC)框架,核心优势是低延迟、高吞吐、原生支持跨主机组网,广泛用于车载、嵌入式、IoT 与微服务场景。
目录
一、核心定位与设计目标
-
定位:替代传统 IPC(如 D-Bus、Socket、共享内存),提供统一、高效、可扩展的通信层,同时支持本地 IPC 与跨主机分布式通信。
-
核心目标
- 极致性能:低延迟、高吞吐量,适合实时 / 高并发场景。
- 跨平台:Linux、Android、QNX、Windows 等。
- 分布式:原生支持多主机组网,服务透明寻址。
- 易用性:IDL 定义 + 代码生成,屏蔽底层细节。
- 可靠性:连接管理、心跳、重连、服务发现。
二、核心概念(借鉴 D-Bus 并优化)
-
服务地址(Bus Address)
- 格式:
fdb://<host>:<port>,本地可用fdb://localhost。
- 格式:
-
服务名称(Service Name)
- 反向域名格式(如
com.example.MyService),用于服务发现与寻址。
- 反向域名格式(如
-
对象路径(Object Path)
- 类文件系统路径(如
/sensor/temperature),定位服务内具体对象。
- 类文件系统路径(如
-
接口(Interface)
- 方法、信号、属性的集合,定义服务能力。
-
成员(Members)
- 方法(Method):请求 / 响应(同步 / 异步)。
- 信号(Signal):发布 / 订阅(Pub/Sub),支持主题过滤。
- 属性(Property):可读 / 可写状态,支持通知。
-
名称服务器(Name Server)
- 核心组件:服务注册、发现、地址映射,支持多实例高可用。
三、通信模式
1. 请求 / 响应(Req/Resp)
- 客户端调用服务方法,服务返回结果。
- 支持同步阻塞与异步非阻塞,适合 RPC 场景。
2. 发布 / 订阅(Pub/Sub)
- 服务发布信号(主题),客户端订阅接收。
- 一对多广播,低延迟事件通知,适合状态同步、告警。
3. 底层传输
- 本地 IPC:Unix 域套接字、共享内存(高性能)。
- 跨主机:TCP(可靠)、UDP(组播发现)。
- 序列化:Google Protobuf(高效二进制)。
四、核心技术特性
-
IDL 与代码生成
- 用 Protobuf IDL 定义接口,自动生成 C++/Python 等桩代码(Stub/Skeleton),大幅简化开发。
-
异步与事件驱动
- 基于非阻塞 I/O 与事件循环,单线程处理高并发,避免线程切换开销。
-
服务发现与动态组网
- 名称服务器自动管理服务上线 / 下线,客户端透明寻址,支持动态扩容。
-
可靠性保障
- 心跳、自动重连、消息确认、流量控制、超时机制。
-
安全机制
- 访问控制、权限策略、加密传输(可选)。
-
轻量与低开销
- 无中心总线瓶颈,资源占用小,适合嵌入式与实时系统。
五、与 D-Bus 的关键区别
表格
| 特性 | FDBus | D-Bus |
|---|---|---|
| 性能 | 低延迟、高吞吐,适合实时场景 | 通用场景,性能一般 |
| 分布式 | 原生跨主机,透明组网 | 主要本地 IPC,跨机复杂 |
| 传输 | Unix 域、TCP、共享内存、Protobuf | Unix 域、TCP、DBus 协议 |
| 模型 | 面向对象 + Pub/Sub,主题灵活 | 面向对象,信号无主题 |
| 适用 | 车载、嵌入式、IoT、微服务 | 桌面、系统服务 |
六、典型应用场景
- 车载系统:座舱、自动驾驶、车联网模块间低延迟通信。
- 嵌入式 / IoT:资源受限设备间高效 IPC 与远程控制。
- 微服务:服务间 RPC、事件总线、服务发现。
- 实时系统:工业控制、机器人、流媒体传输。
0 条评论