概述
从 REST 迁到 gRPC 若设“大爆炸切换日”,消费方将同时承受协议、超时与错误语义的变化。先定义 proto 契约并生成各语言客户端,让两套表面并行,结合特性开关分批迁移与指标对比,最后在用量归零后下线 REST,可把迁移风险拆分成可回退的小步。
关键步骤
- 定义 protobuf 契约并生成各语言桩。
- 让 gRPC 服务与 REST 并行部署。
- 用特性开关按消费方分组迁移。
- 用量归零且指标一致后下线 REST。
验证
- 两套表面的错误率与 p99 可对比。
- 迁移可回退。
- 下载旧接口前其调用量为零。
- 客户端文档同步更新。
决策点
对外或未知客户端应保留网关;对完全可控的内部消费方可按消费方分批,而非一次性切换。
适用范围
本条目围绕「gRPC 服务迁移工作流」给出可复制的步骤、验证方式与常见问题,适合需要按此流程落地的工程团队。执行时请结合自身上下文调整命令与阈值,并在变更前后留存证据,便于后续复核与回滚。
syntax = "proto3";
service Orders { rpc Get(GetRequest) returns (GetResponse); }
message GetRequest { string id = 1; }
message GetResponse { Order order = 1; }