本系列文档对 UMDK(灵衢内存语义开发包)中的 URPC(统一远程过程调用)组件进行深度架构分析和源代码剖析。
文档结构
| # | 文档 | 内容 | 阅读时间 |
|---|---|---|---|
| 01 | 总体架构概览 | Thesis、分层架构图、数据流向、模块依赖图 | 5 min |
| 02 | 核心模块分析 | 模块函数表、动态分发机制、数据结构 | 10 min |
| 03 | RPC 调用流 Deep Dive | 完整 RPC 调用链、Client/Server 端代码路径 | 10 min |
| 04 | 队列生命周期 Deep Dive | 创建、绑定、状态转换、销毁 | 8 min |
| 05 | 流控窗口 Deep Dive | 流控状态机、Immediate 数据编码、窗口更新 | 8 min |
| 06 | UB_PLUS 反向拉取 Deep Dive | 10MB 大块传输、反向拉取状态机 | 8 min |
| 07 | 内存导入协议 Deep Dive | 多内存池导入、EID 拓扑管理 | 5 min |
| 08 | Keepalive 保活 Deep Dive | 定时器检查、保活消息格式 | 5 min |
| 09 | 控制面 IP 传输 Deep Dive | TCP/IP 传输层、SSL 握手、控制消息 | 5 min |
| 10 | 安全加密与扩展 | SSL/TLS、AES-GCM、Ext Ops | 5 min |
阅读路径推荐
深入理解(45 min)
01 → 02 → 03 RPC 调用流 → 04 队列生命周期 → 05 流控窗口
全面掌握(90 min)
按顺序阅读全部 10 篇文档
代码库概况
| 子系统 | 文件数 | 代码行数 | 核心文件 |
|---|---|---|---|
| URPC Framework | ~40 | ~40,000 | cp.c, dp.c, channel.c, queue_send_recv.c |
| UMQ | ~30 | ~20,000 | umq_ub.c, umq_ub_impl.c, umq_api.c |
| 协议定义 | ~5 | ~2,000 | protocol.h, umq_types.h |
| 驱动层 | ~8 | ~5,000 | provider_ops_jetty.c, jetty_public_func.c |
关键洞察
- 四层动态分发:dp.c → queue_ops → send_recv_send → urma_post → bondp_post
- 带内控制:利用 immediate 数据编码流控、内存导入、反向拉取等控制协议
- 并发安全:tx_ctx 双次释放、req_entry hash+线性探测、读写锁分离
- 资源复用:JFR/JFC 通过 ref_cnt 在多个队列间共享
- 用户可选:每一层增量功能都是可选的(feature flag)