该技能用于设计面向外部开发者的公开 gRPC 接口。核心立场是:先回答“这个负载是否真的属于公开 gRPC、通过哪种边缘暴露”,而非默认公开 gRPC 合理。资料指出,多数平台把 gRPC 保持在内网,对外发布 REST 或转码后的 JSON;实践共识偏向双栈,即内部服务间用 gRPC,对外边缘用 REST 或转码 JSON。
适用与判定:先做“是否用 gRPC”的门槛判断,并询问消费者类型——使用官方生成 SDK 的工程师、自行用 proto 生成桩代码的集成方,还是浏览器客户端。浏览器无法直接使用 gRPC 的 HTTP/2 帧,只要存在浏览器消费方,就必须加代理层。公开 gRPC 的合理触发条件包括:消费者确实具备 SDK/proto 能力、负载真是流式形态、且性能是实测瓶颈。
主要工作流共七步:1)判定公开边缘实际使用何种协议;2)设定 proto 包与版本约定,如每个 API 一个以主版本结尾的包(example.library.v1)、目录结构与包一致、只保留主版本、资源导向建模、每个 RPC 使用专用请求/响应包装消息、字段标签不得复用或改号、枚举零值用 _UNSPECIFIED;3)安装破坏性变更门禁,如 CI 中运行 buf breaking --against <main> 与 buf lint,注意 buf 不检查 google.api.http 等自定义选项,需额外快照并比对注解派生的 HTTP 面;4)流式策略默认一元调用,服务端流式优先,客户端流与双向流需记录成本;5)基于 google.rpc.Status 设计错误模型,使用规范状态码与类型化 details,出站前结构化清理 DebugInfo,并注意 gRPC 与 HTTP 状态码映射不具对称性、HTTP 会丢失区分;6)选择转码或网关架构;7)设计外部鉴权与 TLS 并审计暴露面。资料还建议在持久记忆中保存已定决策。版本通知窗口与治理等由相邻技能负责,本技能只覆盖 gRPC 原生部分。全文未提供具体收费、价格或确切的性能数字,其中性能对比数据仅作方向性参考。