用途:gRPC 是开源高性能远程过程调用(RPC)框架,可在任意环境运行,以 Protocol Buffers(Protobuf)作为接口定义语言(IDL)。适合低延迟微服务通信、多语言系统、双向流式实时管道,以及 API 网关后的内部集群流量。
主要能力:支持一元与流式 RPC;基于 HTTP/2 多路复用与二进制分帧,多个并发调用共享单一 TCP 连接;通过拦截器(Interceptor)注入认证、追踪与日志;可跨 Go、Rust、Java、Python、C++、Node.js 生成强类型客户端与服务端桩代码。
使用方式:先用 proto3 定义服务与消息,例如 service Greeter { rpc SayHello (HelloRequest) returns (HelloReply) {} },再生成代码并实现服务端方法。服务端流式示例:rpc StreamMetrics (MetricsRequest) returns (stream MetricData),服务端循环调用 stream.Send 推送数据。一元服务端拦截器签名形如 func loggingInterceptor(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (interface{}, error)。
最佳实践:复用 gRPC 通道,避免每次请求新建连接;为客户端上下文附加超时(context.WithTimeout);谨慎使用 Protobuf 字段编号,不要修改或删除,废弃字段用 reserved 标记;实现 grpc.health.v1.Health 健康检查以配合 Kubernetes 探针。
限制与注意:不要将原始 gRPC 直接暴露给公共浏览器,应使用 gRPC-Web 或 Envoy/Kong 等网关转换 HTTP/JSON;避免发送超大单条消息,默认上限约 4MB,可拆分流式分块或使用对象存储加 claim-check;应使用规范状态码(如 codes.NotFound、codes.InvalidArgument)。常见错误:Unavailable(14) 可用指数退避重试;Unimplemented(12) 需重新生成代码并检查 .proto 同步;消息过大需提高限制或改用流式。
其他信息(如具体安装命令、收费与平台支持细节)暂未提供。