gRPC提供了四种提供服务的模式,它们分别是:
① 简单模式(Unary RPCs);
② 客户端流模式(Client streaming RPCs);
③ 服务端流模式(Server streaming RPCs);
④ 双向流模式(Bidirectional streaming RPCs )
- 简单模式:客户端发出单个请求,服务端返回单个响应。
- 客户端流模式:客户端将连续的数据流发送到服务端,服务端返回一个响应;用在客户端发送多次请求到服务端情况,如分段上传图片场景等。
- 服务端流模式:客户端发起一个请求到服务端,服务端返回连续的数据流;一般用在服务端分批返回数据的情况,客户端能持续接收服务端的数据。
- 双向流模式:双向流就是服务端流和客户端流的整合,请求和返回都可以通过流的方式交互。
接下来,我们将通过官网的一个例子来学习一下这四种模式。
还是用到gRPC-Java(一):构建一个使用Java语言的gRPC工程中已经创建好的项目,完整项目链接附在文末。
##一、编写.proto文件并生成代码
这里面涉及到一些protocol-buffers的语法,可以暂时不用深究,不影响理解大局。
下面的router_guide.proto文件中,使用service关键字定义了一个名为RouteGuide的服务,这个RouteGuide服务中又提供了四个使用



