尧图精选

如何编译部署高性能 RPC 框架 brpc:两套构建体系的完整指南

🕒 发布时间:2026/9/9 21:40:55 📁 来源:尧图网络
如何编译部署高性能 RPC 框架 brpc两套构建体系的完整指南【免费下载链接】brpcbrpc is an Industrial-grade RPC framework using C Language, which is often used in high performance system such as Search, Storage, Machine learning, Advertisement, Recommendation etc. brpc means better RPC.项目地址: https://gitcode.com/GitHub_Trending/brpc/brpc如果你刚把 brpc 源码 clone 下来直接make大概率会看到一长串报错——依赖还没装。brpcbetter RPC是一个 C 工业级 RPC 框架常见于搜索、存储、机器学习、广告推荐这类对延迟敏感的高性能系统。它的构建入口有两条传统脚本和 CMake各自适合不同场景。这篇文章按装依赖 → 选构建方式 → 验证产物 → 排坑的实际工作顺序把编译与部署这条链路走一遍命令都尽量给到可以直接执行的最短形式。编译前先核对依赖版本是否落在支持区间brpc 官方鼓励静态链接依赖这样每台跑服务的机器都不用再装任何东西二进制拷过去就能用。代价是编译前必须确认几样东西的版本对路否则后面要么报错要么埋雷组件支持版本说明GCC5.0–11.2推荐 8.2 及以上Clang3.5–4.0无已知问题glibc2.12–2.25无已知问题protobuf3.0–5.291.8.0 起不再兼容 2.xgflags2.1–2.2.2用于定义全局命令行参数openssl0.97–1.1HTTPS 功能需要tcmalloc1.7–2.5默认不链接按需自选三个核心依赖是 gflags命令行参数解析、protobuf消息序列化和 leveldbrpcz 链路追踪的本地存储。版本区间来自官方构建文档docs/cn/getting_started.md。依赖一次装齐Ubuntu 与 CentOS 各一条命令Ubuntu含 Linux Mint、WSL一行搞定基础依赖sudo apt-get install -y git g make libssl-dev libgflags-dev \ libprotobuf-dev libprotoc-dev protobuf-compiler libleveldb-dev两个按需加装的选项# 样例里要用 cpu/heap profiler 时 sudo apt-get install -y libgoogle-perftools-dev# 要跑单元测试时gtest 默认没编译需要手工编一次 sudo apt-get install -y cmake libgtest-dev cd /usr/src/gtest sudo cmake . sudo make \ sudo mv lib/libgtest* /usr/lib/ cd -注意gtest 源码路径随发行版可能变化/usr/src/gtest不存在时试试/usr/src/googletest/googletest。CentOS/Fedora 用户要先装 EPEL 源包名也略有不同sudo yum install epel-release sudo yum install git gcc-c make openssl-devel gflags-devel \ protobuf-devel protobuf-compiler leveldb-develMacOS 则走 Homebrewbrew install同名包即可但官方提醒同硬件下 MacOS 版性能明显低于 Linux性能敏感的服务不建议拿它当生产环境。两种编译方式怎么选脚本路径 vs CMake 路径拿到源码后clone 地址https://gitcode.com/GitHub_Trending/brpc/brpc构建入口二选一。另外仓库也提供了 Bazel 和 vcpkg 路径example/build_with_bazel_module/下有 Bazel 示例vcpkg 则直接vcpkg install brpc团队没有对应基建的话下面两条主流路径就够用了。维度config_brpc.sh MakeCMake适合场景生产构建产物直接分发日常开发、需要 IDE 索引默认链接方式静态库部署零依赖静态库可切共享库切换编译器--cxxclang --ccclang改环境变量CC/CXXIDE 智能提示需额外配置-DCMAKE_EXPORT_COMPILE_COMMANDSON一步到位脚本路径三步拿到静态链接产物sh config_brpc.sh --headers/usr/include --libs/usr/lib make -j$(nproc)--headers和--libs告诉脚本去哪找依赖的头文件与库支持传多个路径脚本会递归搜索子目录。常用开关--nodebugsymbols不链接调试符号二进制更轻--with-glog用 glog3.3替换内置日志--with-thrift启用 Thrift 协议支持需先装 thrift。CMake 路径对 VSCode / LSP 更友好cmake -B build -DCMAKE_EXPORT_COMPILE_COMMANDSON cmake --build build -j6compile_commands.json生成后VSCode 的 clangd 或 Emacs LSP 就能正确解析代码。对应脚本路径的几个开关CMake 下是这样写的去掉调试符号先删build/CMakeCache.txt再带-DWITH_DEBUG_SYMBOLSOFF重新执行 cmake换 glog-DWITH_GLOGON改链共享库-DLINK_SOON脚本路径则是make clean LINK_SO1 make。验证构建产物用仓库里的 echo 样例做冒烟测试编译完不要直接上生产先跑一遍自带的最小说例。样例会把你刚编出来的 brpc 静态库链进 server 和 client一跑便知构建是否完整cd example/echo_c make ./echo_server ./echo_clientclient 收到 server 回显的消息说明序列化、网络、bthread 调度整条链路都通了。想走共享库链接的话先make clean再LINK_SO1 make即可。对构建结果不放心可以跑全量单测两条路径命令分别是# Make 路径 cd test make sh run_tests.sh # CMake 路径 cmake -DBUILD_UNIT_TESTSON .. make make test部署之后白送的内置 Web 端点brpc 服务自带一组内置服务默认管理端口 8002浏览器或curl localhost:8002直接打开部署后不用额外装监控组件就能看状态几个高频端点/health健康检查接 K8s/SLB 探针/status、/version服务状态与版本/flags、/vars查看并在运行时改参数比如工作线程数/rpcz按 trace/span 查询单条 RPC 的链路细节排障时很省事/hotspots/cpu启用 CPU profiler 编译后能直接看到调用图比如官方文档里 echo 样例的剖析结果就是这样呈现的管理多实例时还有 tools/trackme_server/单独跑一个 trackme_server再给业务进程加-trackme_serverIP:PORT启动参数它就会周期性收到各实例的 ping 并打出日志方便聚合一堆 brpc 实例的地址。两个最容易踩的坑tcmalloc 死锁与 protobuf 版本错位坑一tcmalloc 版本不匹配进程在 main 之前挂死brpc 默认不链接 tcmalloc需要时自己加链接或用LD_PRELOAD加载。不同版本表现差异很大官方明确记录过一个事故用 gcc 4.8.2 编译的程序链接更早版本 GCC 编出的 tcmalloc会在 main() 执行前死锁gdb 现场长这样处理办法只有一个用和 brpc 相同的编译器重新编译 tcmalloc。另外 tcmalloc 不像 ptmalloc 那样及时把内存归还系统遇到怪异的崩溃点、莫名其妙的不崩溃时先把 tcmalloc 摘掉再定位能省掉大量弯路。坑二protobuf 符号冲突undefined reference to google::protobuf::xxx这类链接期报错基本都指向版本错位。brpc 1.8.0 起引入了 proto3 语法不再兼容 protobuf 2.x当前支持区间为 3.0–5.29brpc 内部使用了 protobuf 的非公开 API上游不保证兼容性。解决思路是统一版本卸掉系统里来源不明的旧 protobuf装一个落在支持区间内的版本yum/apt 或源码安装均可再清理构建缓存重编避免旧版本的.o文件残留。下一步可以做什么想摸清框架行为把 example/ 目录里的样例挨个跑一遍从 echo 到负载均衡都有想深入构建细节Docker、自管依赖、vcpkg通读 docs/cn/getting_started.md上线前先make test把单测跑绿再给服务配上-trackme_server和/health探针部署链路就齐了。【免费下载链接】brpcbrpc is an Industrial-grade RPC framework using C Language, which is often used in high performance system such as Search, Storage, Machine learning, Advertisement, Recommendation etc. brpc means better RPC.项目地址: https://gitcode.com/GitHub_Trending/brpc/brpc创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联 返回资讯列表 →