hsipc - 高性能进程间通信框架
一个基于 ipmb 构建的声明式、类型安全的进程间通信框架,提供请求/响应和发布/订阅模式,支持同步和异步操作。
特性
- 🚀 高性能: 基于 ipmb 构建,提供最大吞吐量
- 🎯 类型安全: 编译时检查服务接口和事件类型,支持 trait-based 服务定义
- 📝 声明式: 使用 trait 和宏实现清晰、可读的代码
- 🔄 双模式: 支持同步和异步编程模型
- 🌐 跨平台: 支持 Linux、macOS 和 Windows
- 🔌 发布订阅: 基于主题的事件系统,支持通配符
- 🎛️ 服务网格: RPC 风格的服务调用,自动生成客户端
- 🧬 多态性: 支持同一服务接口的多种实现方式
项目结构
hsipc/
├── hsipc/ # 核心库
├── hsipc-macros/ # 过程宏
├── examples/ # 示例代码
│ ├── request_response/ # 基础请求/响应服务
│ ├── pubsub_events/ # 事件发布和订阅
│ └── trait_based_service/ # Trait-based 服务示例
└── README.md
快速开始
添加 hsipc 到你的 Cargo.toml:
[]
= { = "./hsipc" }
= { = "1.0", = ["full"] }
= { = "1.0", = ["derive"] }
RPC 服务定义(推荐)
服务定义:
use ;
// 定义 RPC 服务接口
// 服务实现
;
async
发布/订阅模式
发布者:
use ;
use ;
async
同步 API
对于不使用 async/await 的应用程序:
use SyncProcessHub;
主题模式
发布/订阅系统支持 MQTT 风格的主题模式:
sensor/temperature- 精确匹配sensor/+- 单级通配符 (匹配sensor/temperature,sensor/humidity)sensor/#- 多级通配符 (匹配sensor/room1/temperature,sensor/room2/humidity/current)
运行示例
# RPC 系统完整演示(推荐)
# RPC 服务示例
# 基础请求/响应示例
# 终端 1 - 启动服务器
# 终端 2 - 启动客户端
# 发布/订阅示例
# 终端 1 - 启动订阅者
# 终端 2 - 启动发布者
架构
hsipc 采用分层架构:
- 传输层: ipmb 提供高性能消息传递
- 协议层: 消息序列化和路由
- 服务层: RPC 抽象,自动生成客户端
- 事件层: 基于主题路由的发布/订阅
- 宏层: 声明式 API 生成
当前状态
这是一个功能完善的 IPC 框架实现,基于 ipmb 构建。当前实现包括:
- ✅ 基础项目结构和依赖管理
- ✅ 核心 trait 和数据结构
- ✅ ProcessHub 抽象层
- ✅ RPC 系统 v2 (2025-07-09 完成)
- jsonrpsee 风格的
#[rpc(server, client, namespace = "name")]宏 - 自动生成类型安全的服务和客户端
- 支持异步/同步方法、多参数、订阅
- 完整的订阅协议基础架构
- 端到端 RPC 调用和错误处理
- 13 个测试全部通过,30 秒验证周期
- jsonrpsee 风格的
- ✅ 发布/订阅系统
- ✅ 完整的示例代码和文档
- ✅ 性能优化和基准测试 (2025-07-09 完成)
- 完整的 criterion 性能基准测试套件
- 验证了关键性能声明: 596-739 MiB/s 消息吞吐量
- 事件发布延迟: ~21.4µs,Hub 创建: ~1.23ms
- 高频操作和并发操作基准测试
- 详细的性能文档和自动化测试脚本
- 🚧 多进程通信优化 (单进程模式完全稳定)
- ⏳ 生产环境特性 (监控、日志等)
性能
基于 ipmb,hsipc 已验证性能:
- 消息吞吐量: 596-739 MiB/s (序列化/反序列化)
- 事件发布延迟: ~21.4µs 平均延迟
- Hub 创建时间: ~1.23ms
- 小消息延迟: 101-5300 ns (亚毫秒级)
- 并发支持: 多任务并发事件发布
- 高效路由: 基于主题的事件路由系统
通过 criterion 基准测试验证。运行 make bench-quick 查看详细结果。
平台支持
- Linux: Unix 域套接字,共享内存
- macOS: Mach 端口,共享内存
- Windows: 命名管道,共享内存
技术亮点
RPC 系统 v2
- 类型安全: jsonrpsee 风格的编译时检查
- 自动生成: 完全类型化的服务和客户端代码
- 异步优先: 默认异步,支持同步标记
- 订阅支持: 内置
PendingSubscriptionSink订阅机制 - 多参数支持: 灵活的参数和返回类型
- 错误处理: 统一的错误传播机制
RPC 系统特性
| 特性 | RPC v2 (当前) | 描述 |
|---|---|---|
| 类型安全 | ✅ 编译时检查 | trait 定义确保类型一致性 |
| 自动生成 | ✅ 服务+客户端 | 自动生成 ServiceName{Service,Client} |
| 异步支持 | ✅ 默认异步 | 支持 sync 标记的同步方法 |
| 订阅机制 | ✅ 内置支持 | 自动插入 PendingSubscriptionSink |
| IDE 支持 | ✅ 完整 | 完整的代码补全和类型提示 |
| 测试友好 | ✅ 优秀 | 易于测试的 trait 基础架构 |
下一步
- 完善订阅系统数据流传输
- 优化多进程通信稳定性
- ✅
RPC 系统 v2(已完成) - ✅
性能优化和基准测试(已完成) - 生产环境特性 (监控、日志等)
- 完善错误处理和重试机制
许可证
根据以下任一许可证授权:
- Apache 许可证 2.0 版本 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
欢迎贡献!请随时提交 Pull Request。