项目背景
在现代分布式系统、微服务架构、高性能后端系统中,进程间通信(RPC) 是核心基础能力之一。
传统的通信方式(HTTP + JSON)虽然简单,但在以下场景中逐渐暴露问题:
- 序列化 / 反序列化性能不足
- 数据冗余,带宽浪费
- 接口定义不强约束
- 客户端 / 服务端接口易不一致
为了解决这些问题,Google 推出了 gRPC(Google Remote Procedure Call),它是一套:
- 基于 HTTP/2
- 使用 Protocol Buffers 作为序列化协议
- 强类型接口定义
- 高性能、跨语言的 RPC 框架
在 C++ 领域,gRPC 被广泛应用于:
- 微服务之间通信
- 游戏服务器内部 RPC
- 高性能后端系统
- 分布式存储、调度系统
- 云原生基础设施
然而,很多 C++ 学习者在初次接触 gRPC 时,普遍存在以下问题:
- 不理解
.proto文件的作用 - 分不清生成代码与手写代码
- 不清楚 C++ gRPC 的基本工程结构
- 不知道一个最小可运行的 gRPC 示例应该长什么样
因此,本项目将通过一个完整、清晰、工程级的 C++ gRPC 示例,系统讲解:
C++ 中如何基于 gRPC 构建客户端与服务端通信
项目需求
本项目的目标需求如下:
1. 功能需求
- 基于 gRPC 实现客户端 / 服务端通信
- 使用 Protocol Buffers 定义 RPC 接口
- 服务端提供一个简单的远程服务
- 客户端调用远程接口并获取返回结果
- 支持同步 RPC 调用
2. 技术要求
- 使用 gRPC C++ 官方库
- 使用 Protocol Buffers
- 使用 C++17 标准
- 客户端与服务端代码结构清晰
3. 教学与工程要求
- 明确区分 proto / client / server 职责
- 代码结构符合真实工程
- 便于扩展为多接口、多服务
- 便于后续引入异步 RPC
相关技术
1. RPC 与 gRPC 简介
RPC(Remote Procedure Call)是一种:
让程序像调用本地函数一样调用远程服务的技术
gRPC 的核心特点包括:
- 接口先行(IDL:
.proto) - 自动生成客户端 / 服务端代码
- 高性能二进制序列化
- 跨语言支持(C++ / Java / Go / Python 等)
2. Protocol Buffers 简介
Protocol Buffers(protobuf)是 Google 提供的:
- 高效
- 紧凑
- 强类型
的序列化协议。

