当前位置:   article > 正文

grpc介绍与通信协议详解_grpc协议

grpc协议

简介

gRPC 是基于 HTTP/2 协议的,要深刻理解 gRPC,就需要理解http/2。既它基于http/2发送,而其编码方式使用protobuf编码,所以我们也需要了解protobuf编码方式

HTTP2协议

HTTP/2 于 2015 年标准化,主要目的是优化性能。其特性如下:

  1. 二进制协议:HTTP/2 的消息头使用二进制格式,而非文本格式。并且使用专门设计的 HPack 算法压缩。
  2. 多路复用(Multiplexing):就是说 HTTP/2 可以重复使用同一个 TCP 连接,并且连接是多路的,多个请求或响应可以同时传输。
    • 对比之下,HTTP/1.1 的长连接也能复用 TCP 连接,但是只能串行,不能“多路”。
  3. 服务器推送:服务端能够直接把资源推送给客户端,当客户端需要这些文件的时候,它已经在客户端了。(该推送对 Web App 是隐藏的,由浏览器处理)
  4. HTTP/2 允许取消某个正在传输的数据流(通过发送 RST_STREAM 帧),而不关闭 TCP 连接。
    • 这正是二进制协议的好处之一,可以定义多种功能的数据帧。

  1. +-----------------------------------------------+
  2. | Length (24) |
  3. +---------------+---------------+---------------+
  4. | Type (8) | Flags (8) |
  5. +-+-------------+---------------+-------------------------------+
  6. |R| Stream Identifier (31) |
  7. +=+=============================================================+
  8. | Frame Payload (0...) ...
  9. +---------------------------------------------------------------+
  • Length:也就是 Frame 的长度,默认最大长度是 16KB,如果要发送更大的 Frame,需要显式的设置 max frame size。
  • Type:Frame 的类型,譬如有 DATA,HEADERS,PRIORITY 等。
  • Flag 和 R:保留位,可以先不管。
  • Stream Identifier:标识所属的 stream,如果为 0,则表示这个 frame 属于整条连接。
  • Frame Payload:根据不同 Type 有不同的格式。

GRPC协议

参考

grpc/PROTOCOL-HTTP2.md at master · grpc/grpc (github.com)

gRPC 基础概念详解 - 知乎 (zhihu.com)

[译]gRPC over HTTP2 - 简书 (jianshu.com)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/430227
推荐阅读
  

闽ICP备14008679号