Google PubSub Pull против потоковых извлечений - PullRequest
1 голос
/ 17 мая 2019

Я читал документацию от Google о pull против потоковой передачи, но не смог ее получить.Может кто-нибудь объяснить мне разницу, а также было бы полезно, если бы кто-то реализовал это и мог указать мне на ресурсы.Большое спасибо.

1 Ответ

0 голосов
/ 20 мая 2019

При использовании Cloud Pub / Sub pull каждый отправляет PullRequest и получает один PullResponse, который содержит до количества сообщений, указанных в запросе (илиошибка, если при получении сообщений возникла проблема).Каждый запрос имеет один соответствующий ответ.При потоковом извлечении отправляется StreamingPullRequest, который открывает поток, по которому будут приниматься данные.Пока поток открыт, Cloud Pub / Sub будет отправлять StreamingPullResponse с дополнительными сообщениями, когда они доступны для доставки.Один запрос может привести к множеству ответов.

В общем, для максимальной пропускной способности и минимальной задержки потоковое извлечение является правильным выбором.Потоковое извлечение сохраняет соединение открытым для Cloud Pub / Sub, и, следовательно, сообщения могут отправляться на это соединение, как только они становятся доступными.Достижение этих свойств при использовании только тяги может быть труднымБез потока сообщения могут быть доставлены только тогда, когда поступит явный запрос. Эти сообщения могли быть готовы к доставке в течение некоторого времени.Чтобы достичь высокой пропускной способности и низкой задержки с использованием pull, необходимо иметь много одновременных невыполненных запросов, когда новые запросы создаются, как только старые запросы получают ответ.Использование pull может иметь смысл, когда подписчик нуждается в гораздо большем контроле над поступлением сообщений, а задержка / пропускная способность не имеет значения.

Клиентские библиотеки Cloud Pub / Sub * построены поверх потоковой передачиpull и, таким образом, если вы можете использовать один из них, вам не нужно будет реализовывать потоковые вызовы напрямую.Все клиентские библиотеки имеют открытый исходный код, поэтому, если вы хотите увидеть примеры выполнения потоковых вызовов непосредственно, вы можете посмотреть в коде.Например, Java имеет StreamingSubscriberConnection.

...