在 gRPC 中,区分长连接和短连接接口主要看 .proto 文件中定义的服务方法类型。gRPC 服务方法有三种类型:
- 简单
RPC (Unary RPC):客户端发送一个请求,服务端返回一个响应。这是最常用的短连接方式。 - 服务端流式
RPC (Server-streaming RPC):客户端发送一个请求,服务端返回一个响应流。这种情况下,连接会保持一段时间以传输多个响应。 - 客户端流式
RPC (Client-streaming RPC):客户端发送一个响应流,服务端返回一个响应。这种情况下,客户端可以持续发送数据,连接保持。 - 双向流式
RPC (Bidirectional streaming RPC):客户端和服务端都可以发送和接收响应流。这种情况下,连接会持续保持以支持双向通信。
如何区分
在 .proto 文件中,通过方法定义的stream关键字来区分:
短连接(Unary RPC):
rpc GetUserInfo(UserRequest) returns (UserResponse);
长连接(Streaming RPC):
// 服务端流式
rpc GetUserStream(UserRequest) returns (stream UserResponse);
// 客户端流式
rpc UploadUser(stream UserRequest) returns (UserResponse);
// 双向流式
rpc Chat(stream ChatRequest) returns (stream ChatResponse);