关键点
- grpc跟普通rpc一样,在服务端定义一个服务,并且提供可被远程调用的方法,运行一个gRPC服务器处理客户端调用。
- 在客户端拥有一个存根(gRPC Stub)能够向服务端发送请求,存根中拥有跟服务端一样的方法。
- gRPC客户端和服务端可以在多种环境中运行和交互(跨平台和跨语言)
- 默认使用protocol buffers作为接口定义语言,来描述服务接口和有效载荷消息结构。需要的话,可以使用其他替代方案
- 提供protocol buffers编译插件,能够从一个服务定义的.proto文件生成服务端和客户端代码
- 通信协议基于HTTP2.0
gRPC允许定义的四类服务方法
- 单项RPC: 即客户端发送一个请求给服务器,从服务端获取应答,就像普通的函数调用。
- 服务端流式RPC: 即客户端可从服务端获取一个数据流,客户端从数据流一直读到没有更多消息为止。
- 客户端流式RPC: 即客户端提供一个数据流写入并发送消息给服务端。当客户端完成写入,就等到服务单读取消息并返回。
- 双向流式RPC: 两端都可以分别通过一个独立的读写数据流来发送消息,即是上述二种的结合。
gRPC生命周期
-
截止时间
gRPC允许客户端在调用一个远程方法前指定一个最后期限值。这个值指定了客户端的超时时间,超过这个值RPC将结束并返回DEADL