FDBus框架架构分析

FDBus是一个跨平台的高性能IPC框架,基于Socket(TCP和Unix Domain)及Google Protobuf,支持分布式、安全的进程间通信。它提供服务名解析,允许服务器在全网络部署,适用于车载、工控等领域。FDBus强调点对点通信,避免中央Hub转发,具有高吞吐和低延迟。此外,它还包括安全策略和心跳重连机制,确保连接可靠性。
摘要由CSDN通过智能技术生成

DBus (Fast Distributed Bus) 是一种 IPC 机制, 用于进程间通信或进程.
与 DBus 类似, 但是其功能更齐全, 新能更高, 使用便利, 除了支持主机内的 IPC, 还能再多个主机之间组网, 同时可以制定安全策略, 支持不同的安全等级.
tips: IPC 机制还有 fifo管道, share memory, semaphore, message queue, socket …
介绍
FDbus 基于 Socket (TCP 和 Unix domain) 之上, 采用 Google protobuf 做序列化和反序列化. FDBus 支持字符串形式的名字作为server地址. 通过 name server 自动为 server 分配Unix domain 地址和 TCP 端口号, 实现 client 和server 之间用服务名字寻址.

FDBus旨在为client-server之间提供面向连接,伸缩性强,安全可靠的IPC机制,进而发展成一套中间件开发框架,用于开发跨平台(Windows,QNX,Linux),多线程/多进程协同工作的中间件层。FDBus开发框架适用于在定制系统上开发交互复杂的分布式项目,包括:
基于Linux的车载ECU,包括仪表,娱乐主机,TBox,通过以太网连接的域控制器
Hypervisors上多个Guest OS之间的通信
为Android系统提供跨主机的IPC机制 (目前不支持Java API)
基于Linux的小型通信设备,例如家用路由器
其它基于Linux的工控设备,智能设备
基于Windows开发的自动化测试设备

背景
不像其它内核,Linux一直没有自己独特且好用的IPC机制。Windows,Mac OS,QNX都有这样的机制,即便是基于Linux的Android也开发了用于IPC的binder。Linux内核只提供一些最基础的组件-socket,pipe,message queue,shared memory等等。这也符合Linux的理念:每个工具只做一件事,把它做好。但是现实往往非常复杂,只做一件事远不能解决现实中遇到的问题,更不要说产品开发和大型商用项目。举个例子,订阅-广播是一个最基本的通信需求,但没有一个基础组件能够满足。

Linux实际上也有一个功能强大的IPC:D-Bus。它有完善的方法调用机制和事件广播机制;它还包含一些诸如安全策略和服务按需启动之类的高级功能。但对它最大的争议是性能:它的性能非常低,由于要经daemon中转,一个请求-回复需要来回复制十次消息,四次消息验证,以及四次上下文切换。因此它只能用于处理实时要求较低,数据量较小的控制命令和消息传递,否则还是得求助于基础IPC框架。为此有人将D-Bus写进内核,产生了KDBus,虽然性能上得到提升,但缺点也很明显,只能在单机上运行,不支持跨主机。在这种情况下Android的Binder也够用,况且Binder已经被内核接受了,KDBus至今还没“转正”。另外,无论是DBus还是KDBus,提供还是基础API,离“中间件开发框架”还有较大差距。但各行业包括车载领域对此都有越来越强烈需求,从而各种各样的DBus封装随之产生:Qt DBus,gDBus,commonAPI,DBus-C++… 但这些封装或者从属于大框架,或者缺少维护,总之使用起来并不友好。

在Linux以及以太网使用越来越广泛的车载领域,缺乏合适的IPC逐渐成为突出问题:公司原来自创的IPC机制由于技术落后,定制痕迹明显,已经无法满足分布式,高性能,安全性要求,却又无法为新平台找到合适的IPC机制,更别说基于IPC机制衍生出的中间件开发框架。以太网在车载的应用催生了SOME/IP(Scalable service-Oriented

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值