
◆ 博主名称: 小此方-CSDN博客 大家好,欢迎来到小此方的博客。
⭐️网络系列个人专栏: 【插曲】C++ 工程组件与基础设施
⭐️此方的GitHub: github_此方
⭐️ 我们思考 (Rethink) · 我们重建 (Rebuild) · 我们记录 (Record)
文章目录
- 概要&序論
- 一、概念
-
- [1.1 RPC初探与主流框架横向对比](#1.1 RPC初探与主流框架横向对比)
- [1.2 深入 brpc:工业级 RPC 框架的核心能力](#1.2 深入 brpc:工业级 RPC 框架的核心能力)
- [1.3 一个端口支持多协议的服务](#1.3 一个端口支持多协议的服务)
- [1.4 灵活的同步与异步处理机制](#1.4 灵活的同步与异步处理机制)
- [1.5 强大的调试与内置组件](#1.5 强大的调试与内置组件)
- [1.6 安装](#1.6 安装)
-
- 1.6.1安装依赖
- [1.6.2 安装 brpc](#1.6.2 安装 brpc)
- 二、图片解析:客户端和服务器的搭建过程
概要&序論
Hello大家好,我是此方。本文深入解析RPC远程过程调用概念,横向对比gRPC、brpc等主流框架优劣势。重点剖析百度工业级框架brpc,讲解其单端口多协议、高并发异步机制与内置调试能力。提供完整的Linux依赖安装与源码编译指南,与客户端服务器搭建过程。
一、概念
1.1 RPC初探与主流框架横向对比
RPC(Remote Procedure Call)远程过程调用,简单来说就是客户端在不知道调用细节的情况下,调用远程计算机上的某个功能就像调用本地功能一样,其主要目标就是让构建分布式计算(应用)更容易,在提供强大的远程调用能力时不损失本地调用的语义简洁性。

目前主流 RPC 框架的特性对比如下:
| 框架 | 开发者 | 语言支持 | 序列化 | http协议 | 文档 | 编译问题 (ubuntu 22.04) | 服务端推送 | 异步调用 | 流式传输 (大块数据传输) | 易用性 |
|---|---|---|---|---|---|---|---|---|---|---|
| grpc | C++、Java、Python、Go | pb | 支持 | 文档较为完善,没有中文文档 | 主要是下载submodule的问题,没有vpn | 不支持 | 1.异步客户端需要用户自己创建消费线程,使用起来较为麻烦 2.支持异步服务器 | 支持(接口简单易用) | 1.简单易用 2.支持跨语言、跨平台 | |
| brpc | baidu | C++ | pb | 支持 | 文档较为完善,有中文文档 | 编译基本没有问题 | 支持,但是支持的不好,是通过一次长的RPC调用实现的 | 1.通过回调函数支持客户端异步调用 | 支持(接口稍微比原生复杂) | 1.提供简洁的API和友好的使用文档,易于上手 2.在sofa-prpc基础上加了一些封装,比如资源管理等,更易用 |
| srpc | sogou | C++ | pb、Thrift | 支持 | 文档略显简单,没有独立网站、都托管在github | 编译基本没有问题 | 不支持 | 1.支持异步客户端 2.通过workflow支持异步服务器 | 不支持 | 专注于异步编程,性能较高,用起来更复杂一些 |
| sofa-pbrpc | baidu | C++、Java | pb | 支持 | 官方文档较少 | 编译存在问题依赖的库版本都比较老 | 不支持 | 1.通过回调函数支持客户端异步调用 | 不支持 | 1.轻量化 2.接口简单,容易使用 |
1.2 深入 brpc:工业级 RPC 框架的核心能力
brpc 是用 C++ 语言编写的工业级 RPC 框架,常用于搜索、存储、机器学习、广告、推荐等高性能系统。那么,它到底能用来干什么?它的核心能力主要体现在以下几个方面。
1.3 一个端口支持多协议的服务
你可以使用它搭建能在一个端口支持多协议的服务,或访问各种服务。这极大简化了微服务网关和混合架构的部署。
- restful http/https, h2/gRPC:使用 brpc 的 http 实现比 libcurl 方便多了。它还支持从其他语言通过 HTTP/h2+json 访问基于 protobuf 的协议。
- redis 和 memcached:支持线程安全,比官方 client 更方便。
- rtmp/flv/hls:可用于搭建流媒体服务。
- thrift:支持 thrift,线程安全,比官方 client 更方便。
- 百度内部协议:支持各种百度内使用的协议,如 baidu_std、streaming_rpc、hulu_pbrpc、sofa_pbrpc、nova_pbrpc、public_pbrpc、ubrpc 和使用 nshead 的各种协议。
- 工业级 RAFT 算法:基于工业级的 RAFT 算法实现搭建高可用分布式系统,已在 braft 开源。
1.4 灵活的同步与异步处理机制
在网络 IO 层面,brpc 提供了极其灵活的调用模式。
- Server 端:能同步或异步处理请求。
- Client 端:支持同步、异步、半同步,或使用组合 channels 简化复杂的分库或并发访问。
1.5 强大的调试与内置组件
对于开发和运维来说,brpc 提供了极佳的便利性:
- 内置服务调试:可以通过 http 界面调试服务,使用 cpu, heap, contention profilers。
- 协议快速接入:把你组织中使用的协议快速地加入 brpc,或定制各类组件,包括命名服务 (dns, zk, etcd),负载均衡 (rr, random, consistent hashing)。
- 性能优势:能够获得更好的延时和吞吐。
1.6 安装
1.6.1安装依赖
在编译 brpc 之前,需要先安装所需的依赖环境:
bash
sudo apt-get install -y git g++ make libssl-dev libprotobuf-dev libprotoc-dev protobuf-compiler libleveldb-dev
1.6.2 安装 brpc
依赖安装完成后,拉取源码并进行编译安装:
bash
git clone https://github.com/apache/brpc.git
cd brpc/
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr .. && cmake --build . -j6
make && sudo make install
二、图片解析:客户端和服务器的搭建过程




好的本文内容到此结束,我是此方,我们下期再见。