Google PubSub Pull与Streaming Pull的区别

时间:2019-05-17 18:04:53

标签: google-cloud-platform grpc google-cloud-pubsub

我正在阅读Google的documentation,内容涉及拉动与流式拉动,但听不清。有人可以向我解释差异吗?如果有人实现了差异并且可以向我介绍资源,这也会有所帮助。 非常感谢。

1 个答案:

答案 0 :(得分:0)

使用Cloud Pub / Sub拉取功能时,发送PullRequest并接收一个PullResponse,其中包含的请求数量最多为请求中指定的消息数(如果存在问题,则返回错误)获取消息)。每个请求都有一个相应的响应。通过流式拉动,可以发送StreamingPullRequest,它会打开一个流,沿着该流将接收数据。在流打开时,只要消息可供传递,Cloud Pub / Sub将发送包含更多消息的StreamingPullResponse。单个请求可能会导致许多响应。

通常,对于最高的吞吐量和最低的延迟,流传输拉是正确的选择。流式拉动使连接保持与Cloud Pub / Sub的连接,因此消息一可用就可以发送到该连接。仅使用拉动来实现这些属性可能很困难。如果没有流,则仅当显式请求进入时才可以传递消息。这些消息可能已经准备好传递一段时间。为了通过拉动实现高吞吐量和低延迟,一个请求必须同时具有许多未完成的请求,其中,一旦旧请求收到响应,就会创建新请求。当订户需要更多地控制消息何时到达并且延迟/吞吐量无关紧要时,使用pull可能很有意义。

Cloud Pub/Sub client libraries建立在流媒体Pull之上,因此,如果可以使用其中之一,则可以避免直接实现流媒体Pull调用。所有客户端库都是开源的,因此,如果您想查看直接进行流式Pull调用的示例,可以查看代码。例如,Java具有StreamingSubscriberConnection