gRPC之基本概念

基于google的官方文档,附带一些自己的思考

服务(service)

gRPC可以定义四种服务

  • 简单的request-response
  • request-stream response,一般用于下载
  • stream request-response,一般用于上传
  • 双向流连接,HTTP2.0的特性之一

使用gRPC

  • 服务器端实现服务器端的接口,服务器端处理的是对象
  • 客户端用客户端的接口发送请求,客户端传给服务器端的是对象
    总而言之,对于写业务代码的人,只需要处理业务对象即可,gRPC保证了对象的序列化问题,IDL用的是pb3.0(官方建议3.0,理论上用2.0也是可以的)

请求

gRPC支持同步请求和异步请求

gRPC连接细节

  • 当一个gRPC连接开始的时候,客户端先上传自己的metadata(相当于request包头),然后服务器可以选择马上返回自己的metadata(相当于reponse包头),或者等待客户端上传完包体再返回
  • 客户端可以声明自己的过期时间(deadline),然而此属性是依赖于客户端语言,例如python肯定有过期时间,但是并不是每个语言都有默认的过期时间
  • RPC的异步请求可以取消,同步请求不能取消(有点质疑)
  • gRPC的默认行为是可以改变的,例如是否压缩数据等

你可能感兴趣的:(gRPC之基本概念)