PolarDB 内核 RDMA 加速技术详解
什么是 RDMA?
RDMA (Remote Direct Memory Access - 远程直接内存访问) 是一种高性能网络通信技术。
核心特性
-
直接内存访问
允许一台计算机直接访问另一台计算机的内存,完全绕过操作系统内核 -
零拷贝 (Zero Copy)
数据传输不需要在用户空间和内核空间之间进行多次复制,大幅降低 CPU 负担 -
超低延迟
微秒级延迟 (1-5μs),相比传统 TCP/IP 的毫秒级延迟 (100μs+) 提升显著 -
低 CPU 开销
网络 I/O 操作由网卡硬件完成,减少 CPU 参与网络传输的时间
技术原理
传统 TCP/IP 网络通信:
应用层 → 内核缓冲区 → 网卡 → 网络 → 网卡 → 内核缓冲区 → 应用层
(多次内存拷贝,CPU 参与多个环节)
RDMA 网络通信:
应用层内存 → RDMA 网卡 → 网络 → RDMA 网卡 → 应用层内存
(零拷贝,CPU 仅负责初始化和完成通知)
PolarDB 中的 RDMA 应用场景
PolarDB 采用存储计算分离架构,RDMA 技术在多个关键路径上发挥作用:
1. 计算节点 ↔ 共享存储
这是 RDMA 的主要应用场景:
-
Redo Log 读写
事务日志的持久化和读取,对延迟极其敏感 -
数据页面访问
从共享存储读取数据页到 Buffer Pool -
元数据同步
表结构、索引等元数据的实时同步
2. 主节点 ↔ 只读节点
支持高性能的读写分离架构:
-
Redo Log 复制
主节点的事务日志实时复制到只读节点,降低复制延迟 -
数据页面同步
共享存储访问的协调和缓存同步
3. 分布式缓存同步
多节点之间的数据一致性维护:
-
Buffer Pool 数据共享
不同计算节点之间的缓存数据共享 -
跨节点缓存一致性
维护分布式缓存的一致性协议
带来的核心收益
1. 性能提升 🚀
网络性能对比
| 指标 | 传统 TCP/IP | RDMA | 提升倍数 |
|---|---|---|---|
| 延迟 | ~100μs | ~1-5μs | 20-100x |
| 吞吐量 | ~10Gbps | ~100Gbps+ | 10x+ |
| IOPS | ~100K | ~1M | 10x |
实际业务影响
-
降低 I/O 延迟
存储访问延迟降低 10-100 倍,使得远程存储访问接近本地 NVMe SSD 性能 -
提高吞吐量
网络带宽利用率提升 10 倍以上,支持更高的并发请求 -
降低事务延迟
事务提交时间大幅缩短,提升整体 TPS
2. CPU 效率提升 ⚡
CPU 占用对比
传统 TCP/IP 网络 I/O:
├── 系统调用: ~10% CPU
├── 内核协议栈: ~15% CPU
└── 数据拷贝: ~5% CPU
总计: ~30% CPU
RDMA 网络 I/O:
├── RDMA 初始化: ~2% CPU
└── 完成通知: ~3% CPU
总计: ~5% CPU
收益
-
降低 CPU 消耗
网络 I/O 的 CPU 占用率从 ~30% 降至 ~5% -
释放计算资源
更多 CPU 资源用于 SQL 执行、事务处理、查询优化等核心业务逻辑
3. 可扩展性增强 📈
-
支持更多只读节点
低延迟的 redo 复制使得只读节点可以快速同步,支持更大规模的读写分离集群 -
更高并发能力
减少网络瓶颈,单节点可支持更多并发连接 -
弹性伸缩更快
新增计算节点时,快速完成数据同步和缓存预热
4. 成本优化 💰
-
降低硬件成本
更高的资源利用率,相同性能需要更少的节点数量 -
降低存储成本
共享存储 + RDMA 的方案成本低于每个节点配置本地高速 SSD -
降低运维成本
存储计算分离架构简化运维,RDMA 确保性能不妥协
典型性能对比
延迟对比
存储读取延迟 (4KB 随机读):
┌─────────────────────────────────────────────┐
│ 本地 NVMe SSD: ~10-20μs │
│ RDMA 共享存储: ~15-30μs │ ← 接近本地存储
│ TCP/IP 共享存储: ~200-500μs │
│ 传统 SAN/NAS: ~1-5ms │
└─────────────────────────────────────────────┘
吞吐量对比
网络吞吐量 (单连接):
┌─────────────────────────────────────────────┐
│ 1GbE (传统): ~120 MB/s │
│ 10GbE (传统): ~1.2 GB/s │
│ 25GbE RDMA: ~3 GB/s │
│ 100GbE RDMA: ~12 GB/s │
└─────────────────────────────────────────────┘
综合性能指标
| 测试场景 | TCP/IP 方案 | RDMA 方案 | 性能提升 |
|---|---|---|---|
| OLTP 读写混合 | 50K TPS | 200K TPS | 4x |
| 批量写入 | 100K rows/s | 500K rows/s | 5x |
| 只读查询 | 80K QPS | 300K QPS | 3.75x |
| 主从复制延迟 | 100ms | 10ms | 10x |
适用场景
最适合 RDMA 加速的场景 ✅
1. 高并发 OLTP 场景
- 大量小事务,每秒数万到数十万 TPS
- 对延迟极其敏感,要求毫秒级响应
- 典型应用:电商交易、金融支付、在线游戏
2. 读写分离架构
- 主从复制延迟要求高,需要接近实时同步
- 大量只读节点,需要快速数据同步
- 典型应用:内容平台、社交媒体、新闻资讯
3. 大规模计算集群
- 多个计算节点共享存储
- 需要高吞吐量的数据传输
- 典型应用:数据分析、机器学习训练
4. 实时分析场景
- 需要快速访问海量历史数据
- 混合 OLTP 和 OLAP 工作负载
- 典型应用:实时报表、用户行为分析
收益较小的场景 ⚠️
- 低并发场景: 并发连接数很少,网络不是瓶颈
- 批处理为主: 大批量、低频次的数据处理,对延迟不敏感
- 计算密集型: CPU 是瓶颈而非网络 I/O
- 小规模部署: 单机部署或仅 2-3 个节点的小集群
技术总结
核心价值
PolarDB 的 RDMA 加速本质上是用硬件级网络优化来解决存储计算分离架构中的网络瓶颈问题。
传统困境:
存储计算分离 → 大量网络 I/O → 高延迟 + 高 CPU 开销 → 性能下降
RDMA 方案:
存储计算分离 + RDMA → 低延迟网络 I/O → 接近本地存储性能
关键优势
- 性能: 使得远程存储访问性能接近本地 NVMe SSD
- 扩展性: 支持大规模读写分离和弹性扩展
- 成本: 相比传统本地存储方案,降低 TCO
- 灵活性: 存储计算分离带来的架构灵活性
实现要求
要充分发挥 RDMA 的优势,需要:
- 硬件支持: RDMA 网卡 (如 Mellanox/NVIDIA ConnectX 系列)
- 网络架构: 支持 RDMA 的交换机和网络拓扑
- 驱动和协议: InfiniBand 或 RoCE (RDMA over Converged Ethernet)
- 软件优化: 数据库内核针对 RDMA 的专门优化
参考资料
相关技术
- InfiniBand: 高性能计算领域的 RDMA 标准
- RoCE (RDMA over Converged Ethernet): 在以太网上实现 RDMA
- NVMe over Fabrics: 基于 RDMA 的远程 NVMe 存储访问
PolarDB 架构特点
- 存储计算分离
- 共享分布式存储 (PolarFS)
- 一写多读架构
- 物理复制 (Redo Log 复制)
文档版本: v1.0
创建日期: 2025-10-16
适用产品: PolarDB MySQL/PostgreSQL 企业版
2586

被折叠的 条评论
为什么被折叠?



