2016-11-27 2 views
1

Итак, я смотрел на использование службы Pub/Sub Google для очередей, но пробным и ошибочным я пришел к выводу, что понятия не имею, что это хорошо для реальных приложений.Какова цель Google Pub/Sub?

Google говорит, что это

Глобальная служба в режиме реального времени и надежный обмен сообщениями и потоковое данных

, но так, как это работа действительно странно для меня. Он содержит подтвержденные сообщения до 7 дней, если абонент повторно подписывается, он получит все сообщения за последние 7 дней, даже если он уже их подбадривает, сообщения с предупреждением, скорее всего, будут отправлены снова тому же подписчику, который уже их подвел и нет FIFO.

Так что я действительно не понимаю, как использовать эту услугу, если единственное, что она гарантирует, - это сообщение будет доставлено хотя бы один раз любому абоненту. Это не может использоваться для идемпотентных действий, каждый абонент должен хранить информацию обо всех сообщениях, которые были уже обнаружены, поэтому он не будет обрабатывать сообщение несколько раз и так далее ...

+0

Должно быть очень редко, что абонент повторно получает сообщение, которое оно уже подтвердило. Если это происходит регулярно, я предлагаю вам открыть билет поддержки, и представитель GCP поможет вам определить причину проблемы. –

+0

На самом деле это не редкость, но довольно нормальная. И не как «ошибка», это документированное поведение. Pubsub гарантирует доставку как минимум один раз, но не один раз. –

ответ

0

Google Cloud Pub/Sub имеет много различных приложений, в которых развязанные системы должны отправлять и получать сообщения. overview page предлагает ряд вариантов использования, включая балансировочные рабочие нагрузки, протоколирование и уведомления о событиях. Это правда, что Google Cloud Pub/Sub в настоящее время не предоставляет никаких гарантий FIFO и что сообщения могут быть повторно добавлены.

Однако тот факт, что гарантия доставки «по крайней мере один раз» не следует воспринимать, чтобы означать, что подтвержденные сообщения переадресовываются при повторном подписчике подписчика. Повторная доставка отмеченных сообщений - редкое событие. Как правило, это происходит только тогда, когда ack не вернул сервис обратно из-за проблемы с сетью, сбоя в работе компьютера или какого-либо другого исключительного состояния. Хотя это означает, что приложения должны иметь возможность обрабатывать этот случай, это не значит, что это произойдет часто.

Для разных приложений, что происходит при доставке сообщений, может отличаться. В случае, например, при аннулировании кеша, упомянутом на обзорной странице, получение двух событий, чтобы аннулировать запись в кеше, означает, что значение нужно будет перезагрузить дополнительное время, поэтому проблема с корректностью не возникает.

В других случаях, таких как отслеживание кликов или других событий на веб-сайте для ведения журналов или статистических данных, редко повторяющееся добавление сообщений может не повлиять на информацию, собранную значительным образом, поэтому не нужно проверять, дубликаты в порядке.

Для случаев, когда необходимо убедиться, что сообщения обрабатываются ровно один раз, необходимо, чтобы на стороне абонента имелось какое-то отслеживание, чтобы убедиться, что это так. Возможно, абонент уже обращается к обновляемой базе данных и обновляет ее в ответ на сообщения, а повторяющиеся события могут быть обнаружены через это хранилище.

+0

Конечно, я могу отслеживать сообщения в подписчике, проблема в том, что если я использую Pubsub в качестве очереди, а мои работники являются эфемерными (работа kubernetes), я не могу отслеживать эту информацию без центральной базы данных, которую я могу использовать для очереди в первое место. Поэтому мой вопрос: какова цель PubSub? –

+0

Похоже, у вас есть очень конкретный случай использования, поэтому я рекомендую вам обновить вопрос в этом случае использования. Если ваш издатель и подписчик тесно связаны друг с другом, у них есть доступ к единой центральной базе данных, а пропускная способность вашей очереди относительно невелика, тогда возможно, что Pub/Sub не обязательно соответствует требованиям, которые у вас есть. Но это большой скачок, чтобы потом сказать: «Я понятия не имею, что хорошо для реальных приложений». Я упомянул случаи, когда по крайней мере один раз доставка не является проблемой. –

Смежные вопросы