protobuf 是外部微服务的好选择吗?我所说的外部微服务是指作为 RESTful 端点公开的某些服务

Is protobuf a good choice for external microservice? By external microservice I mean some service that is exposed as a RESTful endpoint

如果将 protobuf 用作服务于 RESTful 端点的外部微服务的数据序列化,protobuf 消息需要转换回 JSON 消息,这将增加整体消息响应时间。

我知道 protobuf 适用于内部服务之间的通信,但它也适用于外部服务吗?

外部 API 是:无论外部 API 是什么。如果那个外部 API 是 gRPC,那么 protobuf 是一个 很好的 选择,因为 几乎总是 gRPC 使用什么(你需要真的很努力地在 gRPC 中使用 protobuf 以外的东西)。 gRPC 并非无处不在,但在业务间 APIs 中也很常见(特别是如果一端是 Google,显然)。

必须在不同形状(无论是完全不同的格式,还是相同格式的不同负载)之间转换消息是很正常的,假设您不是简单的直通代理,所以:必须解码并且编码并不是一个主要的震惊。如果您可以至少其中一个步骤具有 protobuf 的大小和速度优势:那就太好了。