首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gRPC双向流与背对背HTTP调用

gRPC双向流与背对背HTTP调用
EN

Stack Overflow用户
提问于 2022-10-31 15:29:23
回答 1查看 39关注 0票数 0

我最近看到了文章,我们使用双向流调用来交换业务数据,而不仅仅是上传/下载。

然后我想到了一个问题:这个模型是否可以替代API后端到后端HTTP调用?

例如,如果我们检查这个:

当服务启动时,后端客户端可以与其他后端服务器一起打开gRPC流。然后,当前端客户端调用此服务时:

  1. 后端客户端向另一个后端服务发送请求(带有ID)并等待
  2. 另一个后端服务用响应(和相同的ID)回调后端客户端。
  3. 一旦从后端客户端接收到响应,它就会响应到前端。

这种模式会比背对背HTTP调用更快吗?还是这个想法太蠢了?有人已经试过了吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-02 19:55:49

这种方法有其优点和缺点。

与一元调用相比,如果后端客户端遵循最佳实践,并且在调用之间重用gRPC通道,那么这不应该更快。

区别在于,在一元调用中,header+data帧将在请求时发送,而headers+data+headers帧将在响应时发送,而在bidi流请求响应消息中,响应消息将仅仅是数据帧。但是,报头帧通常都是在同一个数据包中发送的,而且数据帧的解析也不应该太费时,所以我不希望在这里节省任何重要的时间。

将所有一元调用转换为单个bidi流的缺点是:

  • 响应消息中没有错误代码,因此您必须在响应消息中设计错误模型,并在服务器和客户端处理它。
  • 将所有请求放置到单个流中将不允许客户端负载平衡请求。
  • 在http/2流级别上有一个流控制机制。将所有请求放置在单个流上将禁用-一个大请求将阻止所有其他请求。

流调用有许多有效的用例,例如,当我们需要订阅客户端和服务器之间的更新或流数据时。对于这些用例流调用是很好的,但是如果一元调用对您的用例有效,那么将它们转换为流调用不会带来显著的好处。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74265569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档