Python之RPC开发讲解第13篇:gRPC接口类型
🚀🚀🚀本篇主要内容
服务器推送
HTTP/2 新增的另一个强大的新功能是,服务器可以对一个客户端请求发送多个响应。 换句话说,除了对最初请求的响应外,服务器还可以向客户端推送额外资源,而无需客户端明确地请求。
图片无法加载
数据流优先级
因为一条连接允许多个 streams 在上面发送 frame,那么在一些场景下面, 还是希望 stream 有优先级,方便对端为不同的请求分配不同的资源。譬如对于一个 Web 站点来说,优先加载重要的资源,而对于一些不那么重要的图片啥的,则使用低的优先级。
还可以设置 Stream Dependencies,形成一棵 streams priority tree。假设 Stream A 是 parent,Stream B 和 C 都是它的孩子,B 的 weight 是 4,C 的 weight 是 12,假设现在 A 能分配到所有的资源,那么后面 B 能分配到的资源只有 C 的 1/3。
流控制
HTTP/2 也支持流控,如果 sender 端发送数据太快,receiver 端可能因为太忙,或者压力太大,或者只想给特定的 stream 分配资源,receiver 端就可能不想处理这些数据。譬如,如果 client 给 server 请求了一个视屏,但这时候用户暂停观看了,client 就可能告诉 server 别在发送数据了。
[aiohttp 文档]
虽然 TCP 也有 flow control,但它仅仅只对一个连接有效果。HTTP/2 在一条连接上面会有多个 streams,有时候, 仅仅只想对一些 stream 进行控制,所以 HTTP/2 单独提供了流控机制。
[re 正则表达式]
gRPC接口类型
gRPC有4种接口类型:
- Unary RPC (一元RPC)
- Server Streaming RPC ( 服务器流式RPC)
- Client Streaming RPC ( 客户端流式RPC)
- Bidirectional Streaming RPC (双向流式RPC)
对于底层的HTTP/2而言,这些都是数据流Steam, 所说的接口类型是指进行一次gRPC调用的数据通讯流程(或数据流Stream的生命周期)。
1 Unary RPC
最简单的RPC类型,客户端发送单个请求并返回单个响应。
图片无法加载
2 Server Streaming RPC
服务器流式RPC类似于
- 点赞
- 收藏
- 关注作者
评论(0)