概述
OnePath™ 统一逻辑网络(Unified Logical Network, ULN)是一个 C 语言通信中间件。它把分布在不同总线、链路与网段上的异构节点,统一接入一张逻辑网络,对外只提供一套极简、稳定的 C 接口,让节点之间无需感知彼此的物理位置与连接方式,即可完成信息交换与资源共享。
一句话讲清价值:一处编写,全网可达;一条逻辑总线,打通异构链路与跨网段。
功能特性
组网与连通
- 异构组网与统一逻辑网络:把分布在不同总线、链路、网段上的节点接入同一个逻辑网络。节点之间无需感知彼此的物理位置、所在子网或底层传输方式——同一份应用代码在数据中心、局域网、跨网段、甚至同一台机器的不同进程之间都正确工作。
- 零配置自动发现:同一网络内的节点自动相互发现并建立连接,免去手工维护地址列表与配置文件。节点上线即自动加入,下线即自动感知。
- 跨网段转发网关:通过转发网关在不同局域网 / 子网之间中继消息,实现跨网互联互通;跨网段通信对应用完全透明。
- 节点存活感知与透明重连:实时感知对端节点的上线 / 离线状态;连接中断后自动按指数退避重连,重连后订阅、查询关系自动恢复,整个过程对应用层完全透明。
- 网络拓扑感知:基于运行时自省发现网络中的节点、各节点承载的服务、节点间连接关系与传输类型(tcp/udp/serial…,含是否走共享内存),并可聚合为全局拓扑图供监测与可视化使用。
通信能力
- 两种通信范式:内置「发布 / 订阅」(数据分发)与「请求 / 响应」(服务调用)两类范式,覆盖绝大多数分布式场景。
- 层级化寻址与通配符访问:以类似文件路径的层级名称标识资源(如
robot/sensor/temperature),并支持通配符进行批量匹配与订阅(*匹配单层、**匹配多层)。 - 可靠传输与历史补偿:可按需开启消息缓存、丢包检测与历史数据补发,改善弱网与短暂中断环境下的可靠性。
- 服务质量可调:可为消息配置优先级、可靠性等级与拥塞策略,平衡实时性与吞吐。
- 携带数据语义:消息可附带内容类型标识与自定义元数据,便于上层解析与路由。
性能与安全
- 同机零拷贝传输:同一台机器上的不同进程(或同进程的不同会话)可自动经共享内存零拷贝交换数据,获得高吞吐、低延迟;跨机时自动回退到网络传输,对用户完全透明。
- 安全通信:支持传输层加密(TLS,v0.8.0 起两个变体均可用)、身份认证(用户名密码)与基于资源名称的访问控制,保障跨网通信的数据机密性、完整性与访问权限。
工程化能力
- 内置可观测性(零代码改动):v0.3.0 起内置分布式链路追踪(W3C Trace Context)与指标(Counter / Gauge / Histogram),发布订阅、请求响应等核心通路自动埋点,调用链跨多跳自动透传,仅通过环境变量开关即可开启,关闭则回归零开销。
- 多模冗余 XMR:v0.10.0 起在三条核心通路之上提供「N 份冗余 + 投票选举」的容错层(DMR / TMR / NMR),两个变体均可用。
- 完整版 / 精简版可选:完整版面向服务器与桌面,精简版面向嵌入式与边缘设备,同一套用户代码通过一个编译宏即可切换。
- 统一简洁的 C 接口:单头文件、一致的不透明句柄与回调风格,便于快速集成与长期维护。底层通信引擎已静态内嵌进库本身,运行时无任何外部依赖。
文档导航
| 主题 | 页面 |
|---|---|
| 5 分钟跑通第一个发布 / 订阅 | 快速开始 |
| 统一逻辑网络、寻址、范式、节点角色 | 核心概念 |
| full vs tiny 能力对比与编译期剔除 | 变体选择 |
| 消费预构建库:RPM 安装与集成 | 安装与集成 |
| create/destroy 配对与所有权规则 | 内存管理 |
错误码枚举与 onepath_strerror | 错误处理 |
| 追踪 / 指标环境变量总览 | 环境变量 |
| 完整 API 参考 | API 手册 |
| 专有场景(追踪 / 拓扑 / 零拷贝 / XMR…) | 专有场景 |
| 动手实验 | Codelab |
| 产品定位与同类对比 | 白皮书 |