在前面的章节中,我们花了大量的篇幅来介绍grpc链接的建立过程,rpc链接建立后,那么就进入了流处理的阶段;
接下来,我们会详细的介绍流处理过程。
1、帧的介绍 |
gRPC-go框架的底层传输协议是HTTP2,在HTTP2协议中引入了帧的概念,实现了将普通的请求/响应,拆解为帧实现请求和响应的并发;在HTTP2中规定了10中类型的帧。如
- HEADER帧
- DATA帧
- PRIORITY帧
- RST_STREAM帧
- SETTINGS帧
- PUSH_PROMISE帧
- PING帧
- GOAWAY帧
- WINDOW_UPDATE帧
- CONTINUATION帧
在http2里,每个帧都是有一个stremID号的;但是,这个streamID号并不能确定唯一的一个帧,并不能作为身份确认的ID号,因为不同的帧可以使用相同的streamID号;
在HTTP2协议里,我们可以认为帧就是传输数据的最小单位。
在gRPC-go框架中也定义了一些帧;在grpc-go/internal/transport/controlbuf.go文件中定义的一些帧,如dataFrame,incomingSettings,goAway,ping等等;