brpc 生产落地案例全景解析:从互联网业务到分布式数据库的工业级 RPC 实践
【免费下载链接】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("better RPC")是一个用 C++ 编写的工业级 RPC 框架,常用于搜索、存储、机器学习、广告、推荐等高性能系统。本指南以 community/cases.md 收录的社区落地案例为核心,系统梳理 brpc 在百度、vivo、爱奇艺、小红书、滴滴等互联网公司,以及 Apache Doris、StarRocks、BaikalDB 等开源数据库中的真实应用场景、集群规模与版本选择,并结合 README_cn.md 与 docs/cn/overview.md 中的框架能力说明,帮助读者理解 brpc 适合解决哪些问题、在何种规模下经受住了考验,以及如何按规范向社区提交自己的落地案例。
这份案例文档是什么
community/cases.md是 brpc 社区维护的应用案例集合,它的定位非常明确:
- 方便用户参考:了解 brpc 可以在哪些真实场景下落地,包括推荐系统、广告、搜索、风控、直播、存储、数据库等;
- 方便社区统计:帮助社区开发者统计 brpc 的版本分布、集群规模、QPS 量级等信息。
换句话说,这份文档既是"brpc 能做什么"的实证清单,也是社区了解框架实际服役状态的窗口。案例信息由各企业的一线工程师(信息提供者)提交,属于社区自报的落地事实,读者在使用时应注意其数据口径来自各提供者自身。
统一的案例记录模板
为了让每个案例可比、可统计,文档定义了一套落地 case 的标准模板,字段如下:
- 公司名称:落地该场景的企业
- 落地项目:例如 app 的个性化推荐系统的预测服务
- 集群规模:例如 100 台
- QPS:例如峰值 1000 万、均值 100 万
- 使用版本:例如社区版本 0.9.7
- 信息提供者:某某
如果有多个场景,文档建议分开记录。这套模板意味着社区鼓励贡献者提供"可量化"的案例——规模、QPS、版本号都是评估框架服役状态的关键指标。
互联网业务场景:推荐、广告、搜索与风控
案例中占比最大的一类,是互联网公司的核心在线业务系统。brpc 在这些场景中扮演业务服务间通信的底座,覆盖了 docs/cn/overview.md 中所描述的高性能系统典型形态。
百度:框架的诞生地与最大规模战场
- 公司名称:百度
- 落地项目:基础架构(分布式计算、存储、数据库等),业务系统(Feed、凤巢、地图等)
- 集群规模:4000 多个活跃模块,600w 以上实例
- 使用版本:baidu 内部版本
- 信息提供者:wwbmmm
百度是 brpc 的原产地与最大规模验证场。docs/cn/overview.md 明确指出 brpc 是"百度内最常使用的工业级 RPC 框架",有 1,000,000+ 个实例(不包含 client)和上千种服务,在百度内被叫做"baidu-rpc"。案例中"4000 多个活跃模块、600w 以上实例"的口径,印证了它作为百度内部统一通信架构的地位。Feed(信息流)、凤巢(搜索广告)、地图等业务系统与分布式计算/存储/数据库等基础架构同时运行在同一套 RPC 底座上,说明 brpc 既能承载对延迟敏感的在线检索类服务,也能支撑底层基础设施的节点通信。
维沃(vivo):在线推荐系统
- 公司名称:维沃(vivo)
- 落地项目:在线推荐系统
- 使用版本:社区版本 0.9.7
- 信息提供者:guodongxiaren
vivo 的在线推荐系统直接使用社区版本 0.9.7,是"直接用开源主线版本即可上线"的典型案例。
爱奇艺(iqiyi):广告、推荐、搜索三线并进
- 公司名称:爱奇艺(iqiyi)
- 落地项目:广告、推荐、搜索
- 使用版本:基于社区版本定制
- 集群规模:3000+ 台机器(广告)
- 信息提供者:cdjingit
爱奇艺在广告、推荐、搜索三条业务线上都使用 brpc,其中广告场景集群规模达 3000+ 台机器,属于大规模定制化使用。
第四范式(4paradigm):风控、推荐、智能运维
- 公司名称:第四范式(4paradigm)
- 落地项目:风控、推荐、智能运维等
- 使用版本:基于社区版本定制
- 信息提供者:dl239
第四范式将 brpc 用于 AI 相关的风控、推荐和智能运维场景,说明 brpc 在机器学习/推理类服务链路中的适用性。
小红书:推荐系统与基础架构
- 公司名称:小红书
- 落地项目:推荐系统,基础架构(存储等)
- 集群规模:1w 以上实例(推荐)
- 使用版本:基于社区版本定制
- 信息提供者:lzfhust
小红书在推荐系统的集群规模达 1w 以上实例,同时将 brpc 用于存储等基础架构,与百度的"业务 + 基础架构"双线落地模式一致。
作业帮:长连接 IM 与消息分发
- 公司名称:作业帮
- 落地项目:长连接 IM,消息分发系统
- 集群规模:2000+ 核
- 使用版本:基于 0.9.7 定制
- 信息提供者:xdh0817
作业帮的案例展示了 brpc 在高并发连接型业务(长连接 IM、消息分发)上的落地,集群规模以 CPU 核数(2000+ 核)为口径。
欢聚时代:推荐与直播
- 公司名称:欢聚时代
- 落地项目:推荐、直播
- 使用版本:基于社区版本定制
- 信息提供者:chenBright
欢聚时代在推荐与直播场景使用 brpc,直播属于典型的低延迟实时互动场景。
滴滴:地图等业务
- 公司名称:滴滴(www.didiglobal.com)
- 落地项目:地图等业务
- 使用版本:0.9.3
- 信息提供者:NIGHTFIGHTING
滴滴在地图等位置服务业务上使用 brpc,使用版本为较早的社区版本 0.9.3。
数美科技(nextdata):智能风控业务
- 公司名称:数美科技(nextdata)
- 落地项目:智能风控业务(模型特征服务、规则引擎)
- 使用版本:1.0.0
- 信息提供者:day253
数美科技的智能风控业务包含模型特征服务和规则引擎,使用社区版本 1.0.0,是风控领域的高 QPS 特征/规则计算场景。
信网(eyou.com):分布式元数据存储引擎服务
- 公司名称:信网(eyou.com)
- 落地项目:分布式元数据存储引擎服务
- 使用版本:1.3.0
- 集群规模:10 台+
- 信息提供者:haihuju
信网将 brpc 用于分布式元数据存储引擎服务,集群规模 10 台以上,使用社区版本 1.3.0——这是一个规模适中、直接采用较新社区版本的典型中小集群案例。
数据库与存储:MPP 分析型数据库的标准通信底座
第二大类案例来自开源数据库/存储项目,brpc 在这些项目中通常作为节点间内部通信的 RPC 框架,而非业务服务框架。这一类案例尤其能说明 brpc 在"底层基础设施"中的可靠性。
Apache Doris
- 落地项目:Apache Doris
- 使用版本:1.2.0
- 使用情况:Apache Doris 作为一款 MPP 分析型数据库,其内部节点间使用 Apache brpc 作为主要 RPC 框架。brpc 为 Doris 提供了稳定易用的高性能通信机制。并且 brpc 提供的 bthread、bvar 等基础库,以及各种性能调试工具,也极大的方便了 Doris 的开发和调试工作。
- 信息提供者:morningman
Doris 案例直接点名了 brpc 的几项核心资产:bthread(见 docs/cn/bthread.md)提供了轻量级调度,使每个请求可运行在新建立的 bthread 中、天然随负载调节线程数;bvar(见 docs/cn/bvar.md)提供了多线程环境下近乎零开销的计数器,可通过 /vars 查看;而"各种性能调试工具"则对应 docs/cn/builtin_service.md 介绍的内置服务,以及 CPU/堆/锁竞争剖析器(cpu_profiler、heap_profiler、contention_profiler)。
StarRocks
- 落地项目:StarRocks
- 使用版本:内置(vendored)版本
- 使用情况:StarRocks 作为一款 MPP 分析型数据库,其 BE 节点间使用 brpc 作为主要 RPC 框架,默认通信端口 brpc_port=8060,用于节点间数据传输与通信。
- 信息提供者:ShawYann
StarRocks 以 vendored(内置)方式引入 brpc,默认 RPC 端口为8060(brpc_port),BE 节点间通过该端口进行数据传输与通信。这个 8060 端口在下文的腾讯、阿里巴巴案例中再次出现,是理解 StarRocks/Doris 系列部署拓扑的关键参数。
BaikalDB
- 落地项目:BaikalDB
- 使用版本:社区版 0.9.7 & 百度内部 stable
- 使用情况:BaikalDB 是一款面向 OLTP 场景为主的 NewSQL 数据库,其内部节点均采用 brpc 框架通信,实现数据处理和复制以及集群管理,brpc 的高性能对 OLTP 场景的低延迟至关重要,同时 brpc 集成的性能调优工具对 SQL 性能优化提效显著。
- 信息提供者:tullyliu
BaikalDB 是一款面向 OLTP 的 NewSQL 数据库,内部节点全部采用 brpc 通信,覆盖数据处理、数据复制与集群管理。该案例特别强调了两点:低延迟(brpc 的高性能对 OLTP 场景至关重要)与调优工具链(对 SQL 性能优化提效显著),分别呼应 docs/cn/benchmark.md 中的性能对比与上述内置调试体系。
网易:分布式存储系统 Curve
- 公司名称:网易
- 实施项目:高性能分布式存储系统 Curve。
- 集群规模:单个集群 30,000 个节点
- 使用版本:1.3.0
- 信息提供者:Divyansh200102
网易的 Curve 是高性能分布式存储系统,单个集群规模高达 30,000 个节点,使用社区版本 1.3.0。这是案例中单集群规模最大的存储场景之一,对节点间通信的稳定性与吞吐提出了极高要求。
RPC 生态与平台侧:协议兼容与命名服务定制
第三类案例体现了 brpc 作为"多协议、可扩展"框架的平台属性。
搜狗:企业级 RPC 系统 SRPC
- 公司名称:搜狗
- 实现项目:SRPC 是搜狗几乎所有在线服务都使用的企业级 RPC 系统之一,主要功能包括支持 bRPC 等 RPC 协议。
- IDL:PB
- 通讯方式:TCP
- 网络数据:二进制
- 信息提供者:Divyansh20010
搜狗的 SRPC 是一个企业级 RPC 系统,支持 brpc 等 RPC 协议,采用 protobuf(PB)作为 IDL、TCP 作为通讯方式、二进制作为网络数据格式。这体现的是 brpc 协议体系的开放性——通过 docs/cn/new_protocol.md 描述的扩展机制,组织可以把自研协议快速接入 brpc,也可以反过来让自研 RPC 兼容 brpc 协议。
哔哩哔哩(B 站):命名服务的 zone 发现
- 公司名称:哔哩哔哩
- 实现项目:支持 bilibili 在获取服务器节点时发现命名服务的 zone,支持 bilibili 发现服务
- 使用版本:0.9.7, 0.9.6
- 信息提供者:Divyansh200102
B 站在 brpc 的命名服务机制上做了定制,支持在获取服务器节点时发现命名服务的 zone。命名服务是 brpc 服务发现的核心扩展点,docs/cn/load_balancing.md 中介绍了基于 DNS、ZooKeeper、etcd 等实现的命名服务,以及"list://"和"file://"等内置形式,B 站的 zone 发现正是对这一扩展点的定制。
腾讯与阿里巴巴:Doris/StarRocks 生态中的 8060 端口
公司名称:腾讯
已实现的项目:Doris、StarRocks 是后端的 brpc 端口,用于后端实例之间的通信。
端口号:8060
信息提供者:Divyansh200102
公司名称:阿里巴巴
已实现项目:阿里云,brpc 端口用于与另一个 BE 通信。
端口名称:brpc_port
默认端口号:8060
通讯方向:FE <--> BE,BE <--> BE
信息提供者:Divyansh200102
腾讯与阿里巴巴的案例口径一致:在两家的 Doris/StarRocks 部署中,brpc 端口(brpc_port)默认均为8060,用于后端实例(BE)之间的通信,通讯方向覆盖 FE <--> BE 与 BE <--> BE。这与 StarRocks 案例中的 brpc_port=8060 完全吻合,说明 8060 已成为该数据库生态中事实上的标准 RPC 端口。阿里巴巴的案例还特别注明其部署在阿里云上,说明该生态的云上托管形态同样沿用这一端口约定。
案例趋势分析:brpc 都在解决什么问题
综合上述案例,可以归纳出 brpc 生产落地的几条清晰主线:
- 在线业务服务(推荐/广告/搜索):vivo、爱奇艺、小红书、欢聚时代、数美科技等,特征是 QPS 高、对延迟敏感,依赖 brpc 的多协议支持与低开销统计能力;
- 基础架构与存储:百度、小红书、信网、网易 Curve,特征是节点规模大、通信稳定性要求高;
- MPP/NewSQL 数据库内部通信:Apache Doris、StarRocks、BaikalDB,brpc 直接成为数据库节点间的"血管",默认端口 8060,这类案例最能体现框架在长期稳定运行下的可靠性;
- RPC 生态与平台整合:搜狗 SRPC、B 站命名服务定制、腾讯/阿里云的数据库托管,体现 brpc 协议与组件(命名服务、负载均衡)的可扩展性。
这些趋势与 docs/cn/overview.md 描述的能力一一对应:一个端口支持多协议(restful http/h2、gRPC、redis、memcached、thrift 等)、同步/异步/半同步的访问模型、组合 channels、基于 bthread 的"请求结束线程即结束"的自动线程数调节,以及通过内置服务在线查看状态、剖析 CPU/内存/锁竞争的能力。数据库类案例中反复出现的 bthread、bvar 与调优工具,正是这套能力在基础设施场景中的直接体现。
从版本分布看,社区版本 0.9.x(0.9.3、0.9.6、0.9.7)仍是存量服役的主流,1.0.0 与 1.3.0 也已有明确落地,同时多家企业基于社区版本深度定制或使用百度内部版本,说明 brpc 的源码可维护性(vendored、定制化)同样是企业选型时看重的一点。
如何为社区贡献你的落地案例
如果你所在的企业也在生产环境使用 brpc,可以参照 community/cases.md 中的模板向社区提交案例,帮助完善这份清单。建议按如下格式(多个场景请分开记录):
* 公司名称: xxx公司 * 落地项目: 例如app的个性化推荐系统的预测服务 * 集群规模: 例如100台 * QPS: 例如峰值1000万, 均值100万 * 使用版本: 例如社区版本0.9.7 * 信息提供者:某某提交时请尽量填写可量化的指标(集群规模、QPS、版本号),并注明版本是直接使用社区版还是基于社区版定制、是否为内置(vendored)引入——这两点直接影响其他读者对案例可复现性的判断。若不清楚所选版本与框架能力的对应关系,可先阅读 docs/cn/overview.md 与 README_cn.md 了解版本与能力概览。
延伸阅读
- README_cn.md:项目总览、文档索引与示例程序入口
- docs/cn/overview.md:brpc 的能力边界、优势与设计理念
- docs/cn/bthread.md:案例中反复提到的轻量级调度原语
- docs/cn/bvar.md:多线程计数器库,Doris 案例点名的基础库
- docs/cn/builtin_service.md:在线调试服务与状态查看
- docs/cn/load_balancing.md:命名服务与负载均衡的扩展点
- docs/cn/new_protocol.md:如何将组织内协议快速接入 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
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考