除了你提到的 VRPN、LCM、DDS 和 gRPC 这四个在特定领域广泛应用的通信框架外,还有许多通用或专用的进程间通信(IPC)和分布式通信框架在工业界和学术界被广泛使用。以下是一些主流且流行的 IPC/通信中间件或框架,按类别和适用场景分类整理:
一、通用高性能消息中间件(支持跨进程、跨机器)
-
ZeroMQ(ØMQ)
特点:轻量级、无中心 broker、支持多种通信模式(REQ/REP、PUB/SUB、PUSH/PULL 等)
优势:极低延迟、高吞吐、灵活拓扑、支持 TCP/IPC/UDP 等传输
适用场景:金融交易系统、嵌入式、科研原型、微服务胶水层
语言支持:C/C++、Python、Java、Go 等 40+ 语言
注意:不是传统消息队列(如 RabbitMQ),而是"socket on steroids"
-
Apache Kafka
特点:分布式日志系统,高吞吐、持久化、支持流处理
优势:水平扩展、容错强、与 Flink/Spark 集成好
适用场景:日志聚合、事件溯源、实时数据管道
缺点:延迟较高(通常 >10ms),不适合实时控制
-
RabbitMQ
特点:基于 AMQP 协议的经典消息队列,支持复杂路由
优势:可靠性高、管理界面友好、支持多种协议(MQTT、STOMP)
适用场景:任务队列、异步解耦、企业级应用
缺点:性能低于 ZeroMQ/Kafka,有中心化 Broker 开销
-
NATS
特点:高性能云原生消息系统,支持 PUB/SUB 和请求-响应
变种:
NATS Core:轻量、低延迟
NATS JetStream:增加持久化和流式存储
优势:简单、快速、安全(支持 TLS/JWT)、适合微服务
适用场景:IoT、云原生服务通信、事件驱动架构
二、现代 RPC 框架(类似 gRPC 的替代品)
-
Apache Thrift(Facebook 开源)
特点:跨语言 RPC 框架,IDL 定义接口,支持多种传输/协议组合
优势:成熟稳定、支持 C++/Java/Python/Go 等
对比 gRPC:更灵活(可选 Binary/JSON/TCompact 协议),但生态略弱
-
Apache Dubbo(阿里开源)
特点:Java 为主的高性能 RPC 框架,支持服务治理
优势:与 Spring 生态深度集成、负载均衡、熔断、监控完善
适用场景:大型 Java 微服务系统(国内广泛使用)
-
Cap'n Proto
特点:由 Protocol Buffers 原作者开发,零拷贝序列化 + 内置 RPC
优势:比 Protobuf 更快(无需 decode),支持对象指针
适用场景:高性能本地/网络通信(如 Sandstorm.io)
-
FlatBuffers(Google 开源)
特点:零拷贝序列化库(无 RPC 层,但常与自定义 socket 结合)
优势:访问速度快、内存占用低
适用场景:游戏引擎(Unity/Unreal)、移动端、嵌入式
三、机器人/自动驾驶领域专用(除 LCM/DDS 外)
-
ROS / ROS 2(Robot Operating System)
ROS 1:基于 TCPROS/UDPROS + 自定义 master,底层用 XMLRPC + TCP
ROS 2:基于 DDS(如 Fast DDS、Cyclone DDS),但提供统一 API
注意:ROS 本身是框架,其通信机制依赖底层(DDS 是核心)
-
YARP(Yet Another Robot Platform)
特点:模块化机器人中间件,支持多种传输(TCP/MPI/shared memory)
优势:适合人机交互、认知机器人
用户:意大利 IIT(iCub 机器人)
四、操作系统级或轻量级 IPC(本地进程通信)
虽然不是"框架",但在高性能本地通信中常用:
技术 特点
共享内存(Shared Memory) 最快 IPC,需配合信号量/互斥锁同步
Unix Domain Socket 本地进程通信,比 TCP 快,支持流/数据报
D-Bus Linux 桌面/系统服务通信标准(如 systemd、GNOME)
POSIX 消息队列 / System V IPC 传统 Unix IPC 机制,逐渐被 socket 替代
五、新兴或特定领域框架
-
Ice (Internet Communications Engine)
特点:企业级 RPC 框架,支持 Glacier2(防火墙穿透)、IceGrid(服务部署)
优势:功能全面、支持切片 IDL、适用于电信/金融
现状:商业开源(GPL/商业许可),社区活跃度一般
-
Envoy + xDS APIs
特点:虽然 Envoy 是代理,但其 xDS 协议(CDS/RDS/EDS)已成为服务发现通信事实标准
关联:gRPC 服务常通过 xDS 动态配置
-
WebRTC DataChannel
特点:浏览器/设备间 P2P 低延迟数据通道
适用场景:多人 VR/AR 协同、实时协作应用(绕过服务器)
六、总结:按场景推荐
