1. grpc原理
1.1 通信方式
gRPC 允许你定义四类服务方法:
简单RPC(Simple RPC)
即客户端发送一个请求给服务端,从服务端获取一个应答,就像一次普通的函数调用。
1
2rpc SayHello(HelloRequest) returns (HelloResponse){
}服务端流式RPC(Server-side streaming RPC):
一个请求对象,服务端可以传回多个结果对象。即客户端发送一个请求给服务端,可获取一个数据流用来读取一系列消息。客户端从返回的数据流里一直读取直到没有更多消息为止。
1
2rpc LotsOfReplies(HelloRequest) returns (stream HelloResponse){
}客户端流式RPC(Client-side streaming RPC)
客户端传入多个请求对象,服务端返回一个响应结果。即客户端用提供的一个数据流写入并发送一系列消息给服务端。一旦客户端完成消息写入,就等待服务端读取这些消息并返回应答。
1
2rpc LotsOfGreetings(stream HelloRequest) returns (HelloResponse) {
}双向流式RPC(Bidirectional streaming RPC)
结合客户端流式rpc和服务端流式rpc,可以传入多个对象,返回多个响应对象。即两边都可以分别通过一个读写数据流来发送一系列消息。这两个数据流操作是相互独立的,所以客户端和服务端能按其希望的任意顺序读写。
1
2rpc BidiHello(stream HelloRequest) returns (stream HelloResponse){
}