Python之RPC开发讲解第13篇:gRPC接口类型

举报
程序员一诺python 发表于 2025/10/16 20:02:13 2025/10/16
【摘要】 客户端 安装 1 安装依赖工具和库 2 安装Thrift编译器和程序库 Thrift的接口定义语言IDL 1 基本类型 2 容器类型 协议与传输选择 1 协议 服务器 Thrift 简介 架构 使用方法 gRPC HTTP/2 1 HTTP/1.x gRPC接口类型 1 Unary RPC 2 Server Streaming RPC Protocol Buffers 1 文档

🚀🚀🚀本篇主要内容

服务器推送

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类似于

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。