gRPC是Googel基于HTTP/2以及protobuf的。gRPC通常有四种模式,unary,client streaming, server streaming 以及bidirectional streaming,但无论哪一种模式对底层的HTTP/2来说都是stream,所以总结来看,grpc仍是一套request+response的模型。
gRPC Server主要完成以下功能:
将proto中定义的service的真正实现注册到grpc的Server中。
管理Server的Socket以及在Socket上传输数据的过程。
gRPC通信方式 gRPC有四种通信方式:
1、 Simple RPC
简单rpc
这就是一般的rpc调用,一个请求对象对应一个返回对象
proto语法:
rpc simpleHello(Person) returns (Result) {}
2、 Server-side streaming RPC
服务端流式rpc
一个请求对象,服务端可以传回多个结果对象
proto语法
rpc serverStreamHello(Person) returns (stream Result) {}
3、 Client-side streaming RPC
客户端流式rpc
客户端传入多个请求对象,服务端返回一个响应结果
proto语法
rpc clientStreamHello(stream Person) returns (Result) {}
4、 Bidirectional streaming RPC
双向流式rpc
结合客户端流式rpc和服务端流式rpc,可以传入多个对象,返回多个响应对象
proto语法
rpc biStreamHello(stream Person) returns (stream Result) {}