这个系列把 RPC 的知识整理成了一条由浅入深的完整路径:从「RPC 与 gRPC 全景」的第一问开始,用一套 Go gRPC 教程跑通四种通信形态与超时、认证,再进入 gRPC 的高级专题,随后以 brpc 为主线深入一个工业级 RPC 框架的并发内核、服务端能力、客户端治理与流控容错。全系列 43 篇,按发文时间顺序读即是推荐阅读顺序。
先立一个总纲:RPC 框架要解决的核心问题始终是三件——如何把调用映射到网络(协议与序列化)、如何把请求调度到 CPU(并发模型)、如何把流量分配到集群(负载均衡与容错)。gRPC 部分偏「怎么用」,brpc 部分偏「怎么实现」,两部分正好互为印证。
第一部分:gRPC 入门与实战(一~十二)
- RPC 与 gRPC 全景:RPC 的原理、gRPC 的调用模型与语言支持
- Go gRPC 环境安装:protoc 与 Go 插件链路的完整搭建
- Go gRPC 简单 RPC:一元调用,从 proto 定义到 client/server 全流程
- Go gRPC 服务端流式 RPC:server streaming,一次请求多次响应
- Go gRPC 客户端流式 RPC:client streaming,多次请求一次响应
- Go gRPC 双向流式 RPC:bidirectional streaming,两边同时收发
- Go gRPC 超时设置:context 与 deadline 的传递
- Go gRPC 的 TLS 认证:单向 TLS 与自定义方法认证
- gRPC 的 deadline 语义:超时如何跨服务传播
- gRPC 流式消息的大小限制:为什么流式能绕过 4MB 限制
- gRPC 大数据量消息传递:MaxRecvMsgSize 与分块方案
- gRPC 客户端负载均衡:etcd 注册发现 + grpclb 的完整实验
第二部分:brpc 全景与并发内核(十三~二十二)
brpc 是百度开源的工业级 C++ RPC 框架,这一部分看它的并发底座:
- brpc 全景:brpc 的能力地图与设计取舍
- brpc 的线程与协程:从 reactor 模型的痛点说起
- bthread 是什么:M:N 用户态线程的核心机制
- 何时该用 bthread:并发 RPC 之外的场景辨析
- bthread_id 详解:O(1) 定位上下文的无锁设计
- brpc 的线程本地存储:bthread 与 TLS 的兼容问题
- 原子操作指令的选择:lock 前缀指令与 memory order 的代价
- brpc 的内存管理:ResourcePool 与对象复用
- brpc 的 IO 与缓冲:wait-free 写出与 KeepWrite,底座与本站《TCP/IP 系列导读》的 I/O 多路复用一脉相承
- brpc 的定时器:超时控制的实现
第三部分:brpc Server 能力与观测(二十三~三十四)
- brpc Server 全解:启动、选项、协议、压缩、重试的主文档
- brpc 内置服务:status/health/protobufs 等开箱服务
- brpc 的服务器推送:服务端主动下发消息
- brpc 的流式 RPC:大文件与实时数据的流式传输
- brpc 自定义协议:接入私有协议的完整方法
- brpc 错误码:errno 体系与错误处理
- brpc 的 gflags 配置:命令行与运行时动态调参
- 用 rpcz 观测 RPC:单个请求全链路的 span 视图
- bvar 与性能指标:无锁多线程统计的设计
- brpc 的 vars 变量:导出与查询运行时指标
- brpc 的连接管理:单连接、连接池、短连接的取舍
- brpc Server 的调试方法:pprof、火焰图与性能剖析实战
第四部分:brpc Client 与流量治理(三十五~四十三)
- brpc Client 全解:Channel、命名服务、同步/异步、重试的主文档
- brpc 的组合通道:ParallelChannel 与分支聚合
- brpc 的负载均衡:rr/random/la 等策略与扩展
- lalb 自适应负载均衡:按延时自动分流的算法,思想与本站《TCP/IP 系列导读》的拥塞控制异曲同工
- brpc 的一致性哈希:ketama 与缓存场景
- Backup Request 策略:对长尾延时的最好武器
- 自适应并发限流:自动估算容量的限流器
- 从雪崩看限流:为什么过载保护必不可少
- ExecutionQueue 详解:无锁串行执行队列
怎么读这个系列
- 想快速上手 gRPC:只读第一部分的八篇教程(一~八),跟着代码跑完即可独立开发
- 在做服务治理:直接跳第四部分(负载均衡、备份请求、限流、雪崩),这是线上稳定性的核心知识
- 想深入 RPC 框架原理:第二部分(并发内核)+ 第三部分(Server)逐篇精读,brpc 文档级的实现细节比大多数书籍都扎实