gRPC之基本概念 - Go语言中文社区

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的默认行为是可以改变的,例如是否压缩数据等
版权声明:本文来源简书,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://www.jianshu.com/p/799fd4cf41ca
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-02-02 14:53:12
  • 阅读 ( 1297 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢