gpt4 book ai didi

gRPC 双向流与背对背 HTTP 调用

转载 作者:行者123 更新时间:2023-12-03 08:00:48 25 4
gpt4 key购买 nike

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

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

例如,如果我们检查以下内容:

enter image description here

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

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

这种模式是否比背对背 HTTP 调用更快?或者这个想法完全是愚蠢的?有人已经尝试过这个了吗?

最佳答案

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

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

区别在于,在一元调用中, header +数据帧将根据请求发送, header +数据+ header 帧根据响应发送,而在双向流中,请求-响应消息将只是数据帧。但无论如何, header 帧通常会与数据帧在同一个数据包中发送,并且 header 解析不应该太耗时,因此我不认为我们可以在这里节省任何大量时间。

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

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

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

关于gRPC 双向流与背对背 HTTP 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74265569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com