核心概念
基于 HTTP/2 与 protobuf 的 RPC 框架。
| 命令 | 说明 |
|---|
| 接口与数据结构来自 .proto 文件 |
| 一元、服务端流、客户端流、双向流 |
| 客户端通过 Channel 建立连接,用 Stub 调用方法 |
| 像 HTTP 头一样携带键值对(认证、追踪) |
proto 定义
服务与消息。
| 命令 | 说明 |
|---|
| 定义服务 |
| 服务端流式 |
| 客户端流式 |
| 请求消息 |
客户端调用
多语言示例。
| 命令 | 说明 |
|---|
| Go 一元调用 |
| Python 调用 |
| Java 调用 |
| 设置超时(必须传 ctx) |
状态与元数据
错误码与头部。
| 命令 | 说明 |
|---|
| 常用状态码 |
| Go 中返回带码错误 |
| 发送元数据(如 token) |
| 服务端读取元数据 |
工具
调试与健康检查。
| 命令 | 说明 |
|---|
| 像 curl 一样调用 gRPC |
| 发送请求(需开启反射) |
| 健康检查探针 |
| 生成各语言客户端与服务端代码 |
| 让 grpcurl 等工具无需本地 proto 即可调用 |
使用说明
gRPC 速查:核心概念、proto 定义、客户端调用、状态与元数据、工具;支持搜索与分类筛选,点击即可复制。
- 按用途点分类:核心概念、proto 定义、客户端调用、状态与元数据、工具。
- 点「命令」列复制到 proto 或客户端代码。
- 先用 grpcurl 配反射快速联调,再写正式客户端。
- 服务端返回错误要用状态码(codes.*),别只返回字符串。
常见问题
- 为什么调用要带 context / ctx?
- gRPC 的超时、取消与元数据都挂在 ctx 上;不带 ctx 无法控制超时,容易请求悬挂。
- grpcurl 一定要本地有 proto 吗?
- 不一定:服务端开启反射(grpc.reflection)后,grpcurl 可直接列出并调用方法。
- 需要联网吗?
- 速查内容本地可用;安装工具与依赖需联网。
延伸阅读