Google PubSub Pull 与 Streaming Pull 的区别

Sha*_*esh 3 google-cloud-platform google-cloud-pubsub grpc

我正在阅读谷歌关于拉取与流拉取的文档,但不太明白。有人可以向我解释其中的区别吗,如果有人实施了它并且可以向我指出资源,这也会有所帮助。非常感谢。

Kam*_*osn 19

使用 Cloud Pub/Sub pull 时,发送PullRequest和接收PullResponse包含最多请求中指定数量的消息的单个消息(如果获取消息时出现问题,则会出现错误)。每个请求都有一个对应的响应。使用流式拉取,发送一个StreamingPullRequest,它打开一个流,沿着它接收数据。当流打开时,StreamingPullResponse只要消息可以传送,Cloud Pub/Sub 就会发送更多消息。单个请求可能导致多个响应。

一般来说,为了获得最高的吞吐量和最低的延迟,流式拉取是正确的选择。流式拉取会保持与 Cloud Pub/Sub 的连接打开,因此消息一可用就可以发送到该连接。仅使用 pull 来实现这些属性可能很困难。如果没有流,消息只能在显式请求进来时传递。这些消息可能已经准备好传递一段时间了。为了通过拉取实现高吞吐量和低延迟,必须同时拥有许多未完成的请求,一旦旧请求收到响应,就会创建新请求。当订阅者需要对消息到达的时间进行更多控制并且延迟/吞吐量不是问题时,使用拉取是有意义的。

云端发布/订阅客户端库是建立在流拉的顶部,因此,如果您可以使用其中的一个,你能避免需要直接实现流式拉电话。所有客户端库都是开源的,因此如果您想查看直接进行流式拉取调用的示例,可以查看代码。例如,Java 具有StreamingSubscriberConnection.

  • 很难相信这样一个写得好的答案没有一个赞成票和/或接受的标记。在这里,请投我一票! (2认同)