VLink  2.0.0
A high-performance communication middleware
VLink

CI Lint CI Test coverage benchmark

English | 中文 · 官方网站 · 文档

VLink 是面向自动驾驶与具身智能的高性能 C++17 通信中间件,定位为 ROS 2 的全场景替代方案。它以一套类型安全的统一 API 覆盖进程内、共享内存、车载以太网与跨机网络的全部通信需求,使通信后端的更换退化为一次 URL 前缀的修改,而业务代码不随之改动。

当前版本支持 12 种传输后端、14 种序列化格式、3 种通信模型与 6 个核心原语,并提供安全加密、录制回放、服务发现、9 个 CLI 工具及 Foxglove / Rerun 可视化桥接。


🧩 核心抽象:URL 即通信契约

VLink 的全部设计围绕一个中心抽象:一次通信由"通信模型 + URL + 核心方法"三要素确定,后端是 URL 前缀的实现细节,对业务逻辑不可见。

<scheme>://<topic_name>[?参数]

scheme 决定后端,更换后端只需更换前缀,业务代码不变:

vlink::Publisher<Imu> pub("intra://sensor/imu"); // 进程内
vlink::Publisher<Imu> pub("shm://sensor/imu"); // 同机零拷贝
vlink::Publisher<Imu> pub("dds://sensor/imu"); // 跨机网络

由此得到三项工程收益:业务逻辑与传输实现解耦;用 intra:// 即可在单进程内完成端到端测试;部署拓扑由配置而非源码决定。


📡 通信模型

VLink 提供三种通信模型,对应六个核心原语,按通信语义选择,与后端无关。

事件 Event —— 发布 / 订阅

vlink::Publisher<Imu> publisher("dds://sensor/imu");
publisher.publish(msg);
vlink::Subscriber<Imu> subscriber("dds://sensor/imu");
subscriber.listen([](const Imu& msg) { process(msg); });

方法 Method —— 请求 / 响应

vlink::Server<Req, Resp> server("dds://calc/add");
server.listen([](const Req& req, Resp& resp) { resp.set_sum(req.left() + req.right()); });
vlink::Client<Req, Resp> client("dds://calc/add");
if (auto resp = client.invoke(req, std::chrono::seconds(3))) { use(*resp); }

字段 Field —— 状态同步

vlink::Setter<Status> setter("shm://vehicle/status");
setter.set(status);
vlink::Getter<Status> getter("shm://vehicle/status");
getter.listen([](const Status& s) { use(s); });
模型 语义 原语 典型场景
事件 Event 发布/订阅 Publisher<T> / Subscriber<T> 传感器数据、感知结果广播
方法 Method 请求/响应 Client<Req,Resp> / Server<Req,Resp> 地图查询、参数读写、服务调用
字段 Field 状态同步 Setter<T> / Getter<T> 车辆状态、配置参数、标定值

🚌 传输后端

前缀 底层 通信范围 零拷贝 状态
intra:// 内置队列 进程内 稳定
shm:// Iceoryx 同机跨进程 稳定
dds:// Fast-DDS 跨机网络 稳定
ddsc:// CycloneDDS 跨机网络 稳定
shm2:// Iceoryx2 同机跨进程 Beta
ddsr:// RTI Connext 跨机网络 Beta
ddst:// 国产 DDS 跨机网络 Beta
zenoh:// Zenoh 跨机 / 云边 Beta
someip:// vsomeip 车载以太网 Beta
mqtt:// Paho MQTT 云端 Beta
fdbus:// FDBus 同机 Beta
qnx:// QNX IPC 同机(QNX) Beta

URL 语法、查询参数与各后端要点见 传输后端与 URL


🚀 快速开始

推荐使用 VKit 构建。VKit 将多仓库源码拉取、跨平台工具链分发、分层组件编排与打包整合为统一流水线,在 Linux / QNX / Android / macOS / Windows 上以相同命令完成构建,且仅依赖 Bash 与 CMake。

git clone https://github.com/thun-res/vkit.git && cd vkit
make import_full # 拉取 middleware 源码:vmsgs 与 vlink
make # 编译、部署并生成 runtime 包

亦可在已有 CMake 工程中单独集成 VLink:

find_package(vlink REQUIRED COMPONENTS shm dds)
target_link_libraries(my_app PRIVATE vlink::vlink vlink::shm vlink::dds)

完整构建、交叉编译与集成方式见 构建与集成


🧰 工程生态

VLink 由三个协同的仓库构成:

仓库 职责 地址
VLink 通信中间件本体(本仓库) https://github.com/thun-res/vlink
VKit 跨平台构建与发布套件 https://github.com/thun-res/vkit
VMsgs 标准消息定义库(感知/规划/定位/地图等领域,Protobuf / FlatBuffers) https://github.com/thun-res/vmsgs

📚 文档

📄 VLink 技术白皮书 —— 行业背景、技术论证、横向对比与性能分析的完整学术论述。

以下为面向使用的学习路径(16 篇),建议顺序阅读。

入门

文档 内容
0. 概述与设计哲学 定位、核心抽象(URL 即通信契约)、架构与能力全景
1. 快速上手 VKit 构建、第一个程序、示例导航

核心

文档 内容
2. 通信模型 节点基础与 Event / Method / Field 三模型
3. 消息序列化 类型驱动的自动序列化

传输与能力

文档 内容
4. 传输后端与 URL 12 种后端与 URL 规范
5. QoS 配置 服务质量策略与 profile
6. 零拷贝 借贷接口与感知数据容器
7. 安全加密 消息级加密与密钥管理
8. 基础库 Logger / MessageLoop / Timer / ThreadPool 等
9. 录制与回放 Bag / MCAP 格式与接口

工具与运维

文档 内容
10. CLI 工具 9 个命令行工具
11. 可视化(Viewer / WebViz) 桌面 Viewer 与 Foxglove / Rerun 桥接
12. 服务发现与代理监控 拓扑发现与跨网段观测

集成与参考

文档 内容
13. 集成与扩展 C API、插件系统、环境变量
14. 速查与故障排查 单页 API/URL/QoS/CLI 参考与症状索引
15. 测试与贡献规范 测试框架与贡献流程

📊 项目报告

VLink 在每次版本发布时自动运行基准测试与覆盖率统计,并发布完整报告。

报告 在线报告 Wiki 摘要
🚀 性能基准(vlink-bench) 在线查看 Benchmarks
🧪 代码覆盖率 在线查看 Coverage

💻 平台支持

平台 架构 编译器 状态
Linux x86_64 / aarch64 GCC 9+ / Clang 10+ 稳定
QNX 7.x / 8.x aarch64 / x86_64 QCC(QNX SDP) 稳定
Android aarch64 / x86_64 NDK Clang r25+ 稳定
Windows 10+ x86_64 MSVC 2019+ / MinGW 稳定
macOS 10.15+ x86_64 / arm64 AppleClang 12+ Beta

📁 项目结构

vlink/
├── include/vlink/ 公共头文件(6 原语 + 基础库 + 扩展 + 零拷贝)
├── src/ 核心库实现
├── modules/ 12 种传输后端实现
├── cli/ 9 个命令行工具
├── proxy/ ProxyServer / ProxyAPI
├── viewer/ Qt 桌面可视化工具
├── webviz/ Foxglove / Rerun 桥接
├── c_api/ C API(供 Python / Rust 等 FFI 调用)
├── python_api/ nanobind Python 绑定
├── examples/ 使用示例(14 个分类,29 个工程)
├── test/ 测试套件
├── doc/ 文档
└── CMakeLists.txt 顶层 CMake 入口

🤝 贡献

VLink 由 Thun Lu 维护,欢迎 PR、issue 与文档改进。提交前请阅读 贡献规范

📜 许可证

[Apache License 2.0](LICENSE) —— 可自由用于商业项目。

Copyright (C) 2026 Thun Lu. All rights reserved.