eRPC: 数据中心网络的高效RPC库
eRPC Efficient RPCs for datacenter networks 项目地址: https://gitcode.com/gh_mirrors/erp/eRPC
1. 项目介绍
eRPC 是一个为数据中心网络设计的快速、通用的 RPC(远程过程调用)库。它支持多种网络类型,包括 Ethernet、InfiniBand 和 RoCE。eRPC 以低延迟和高性能著称,能够满足现代数据中心网络的需求。其主要特点如下:
- 多网络支持:支持 Ethernet、InfiniBand 和 RoCE 网络。
- 低延迟:使用 UDP over Ethernet 时,往返 RPC 延迟可低至 2.3 微秒。
- 高性能:单个 CPU 核心上,32 字节 RPC 的性能可达每秒约 10M RPCs;单个网卡上可达 75 Gbps 的带宽。
- 可扩展性:单个服务器可支持多达 20000 个 RPC 会话。
- 端到端的拥塞控制:能够容忍 100 路汇聚。
- 支持嵌套 RPC 和长时间运行的后台 RPC。
- 提供了 Raft 的端口,作为示例。
2. 项目快速启动
以下是快速启动 eRPC 的步骤:
首先,克隆项目仓库:
git clone https://github.com/erpc-io/eRPC.git
cd eRPC
然后,使用 CMake 编译项目,运行测试:
cmake . -DPERF=OFF -DTRANSPORT=dpdk
make -j
sudo ctest
如果要编译并运行 hello_world
应用程序,请按照以下步骤操作:
-
进入
hello_world
目录。 -
编辑
common.h
文件,设置服务器和客户端主机名。 -
根据所使用的传输方式,编译
hello_world
:- 使用 DPDK:
make dpdk
- 使用 InfiniBand:
make infiniband
- 使用 DPDK:
-
在服务器主机上运行
./server
,在客户端主机上运行./client
。
3. 应用案例和最佳实践
- 案例:使用 eRPC 实现分布式系统中的远程调用,如分布式数据库、存储系统和微服务架构。
- 最佳实践:在数据中心网络中部署 eRPC 时,建议使用至少 10 GbE 的网卡以提高性能。确保每个 NUMA 节点上有至少 1024 个大页,并取消限制 SHM 限制。
4. 典型生态项目
eRPC 可以与多个开源项目配合使用,以下是一些典型的生态项目:
- DPDK:数据平面开发工具包,用于实现高效的数据包处理。
- rdma-core:用于 RDMA(远程直接内存访问)的底层库。
- NumaDP:一个基于 DPDK 的网络栈,支持多种网络协议。
以上就是关于 eRPC 的介绍、快速启动指南、应用案例和生态项目。希望这些信息对您有所帮助。
eRPC Efficient RPCs for datacenter networks 项目地址: https://gitcode.com/gh_mirrors/erp/eRPC
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考