Nano Hash - криптовалюты, майнинг, программирование

Нужны ли нам сложные стратегии отправки для GCM/FCM?

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

Теперь мой вопрос: нужно ли мне придумывать сложную стратегию отправки? Я знаю, что с GCM есть ограничение в 1000 устройств на запрос, так что это нужно учитывать. Я также не могу дождаться, когда прилетит x push, так как это может задержать отправку предыдущего push. Следующей моей мыслью было создать глобальный массив и заполнить его отправками из очереди. Затем цикл будет извлекать этот массив каждую, скажем, 1 секунду и отправлять push-уведомления. Таким образом, push-уведомления будут отправлены точно, и я не превысю лимит в 1000 устройств.

Итак... хотя это может сработать, я не уверен, что бесконечный цикл - лучший способ. Мне интересно, есть ли у GCM/FCM лимит запросов? В противном случае мне не нужно было бы объединять нажатия в первую очередь, и я мог бы отказаться от цикла. Я мог бы просто запускать запрос для каждого нажатия, которое извлекается из очереди.

Любое просветление по этой теме или улучшение моего прототипа алгоритма было бы здорово!


Ответы:


1

Нужно ли мне разработать сложную стратегию отправки?

Не совсем. GCM/FCM достаточно прост. Просто отправьте сообщение на сервер GCM/FCM, и он сам поставит его в очередь, а затем (согласно своему поведению) отправит его как можно скорее.

Я знаю, что в GCM есть ограничение в 1000 устройств на запрос, поэтому это необходимо учитывать.

Я думаю, вы путаете ограничение в 1000 устройств на запрос. Ограничение в 1000 устройств относится к количеству регистрационных токенов, которые вы добавляете в список при использовании registration_ids:

Этот параметр указывает список устройств (токенов регистрации или идентификаторов), получающих многоадресное сообщение. Он должен содержать не менее 1 и не более 1000 токенов регистрации.

Это означает, что вы можете отправлять только 1000 устройств с одной и той же полезной нагрузкой сообщения в одном запросе (затем вы можете выполнить пакетный запрос (1000/каждый запрос), если вам нужно).

Мне интересно, есть ли у GCM/FCM лимит запросов?

АФАИК, такого предела нет. Сбросить петлю. Всякий раз, когда вы успешно отправляете сообщение на сервер GCM/FCM, он ставится в очередь и сохраняет сообщение до тех пор, пока оно не будет доступно для отправки.

10.01.2017
  • Я имел в виду лимит регистрационных токенов на сообщение! Но знать, что лимита запросов не существует, — это здорово. Я думал, что есть какое-то ограничение, чтобы предотвратить бомбардировку DOS при отправке push-уведомлений, поэтому моя принудительная агрегация... 10.01.2017
  • @codepushr Ранее упоминалось о дросселировании. Но это было давным-давно и больше не упоминается в официальной документации. Так что я думаю, что это уже было списано. Ваше здоровье! 10.01.2017
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..