APNS Push Server с несколькими приложениями

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

Для использования APNS у меня возникают проблемы с разработкой архитектуры.
Я прочитал APNS Начало работы.

Apple заявляет, что необходимо поддерживать соединения для push с APNS, чтобы избежать того, чтобы их рассматривали как DDOS-атаку:

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

Apple заявляет, что для большого количества нажатий:

«Вы можете установить несколько подключений к одному и тому же шлюзу или к нескольким экземплярам шлюза. Если вам нужно отправить большое количество удаленных уведомлений, распределите их по соединениям на несколько разных шлюзов. Это повышает производительность по сравнению с использованием одного подключения: это позволяет вы отправляете удаленные уведомления быстрее, и это позволяет APN доставлять их быстрее ».

Я нашел этот пост о Постоянные APNS-соединения на сайте, где говорится…Эмпирическое правило составляет не более 15 подключений«

Мои вопросы:

1. Как я должен обрабатывать эти нажатия для нескольких приложений, не рискуя быть замеченным как DDOS ?. Я не думаю, что смогу использовать свои непостоянные серверы с автоматическим масштабированием, потому что они будут подключаться / отключаться при загрузке / выключении. Нужно ли распространять свои соединения на несколько статических серверов?

2. Если я распространю свое соединение на несколько серверов, это позволит мне обойти это псевдо-ограничение 15 соединений? Если мне нужно несколько соединений для каждого приложения для отправки большого количества push-уведомлений, я чувствую, что я бы превысил 15 по мере роста моей клиентской базы.

2

Решение

Посмотрели аналогичный вариант использования и TBH, кажется, проще использовать Amazon SNS Mobile Push. Вы можете поддерживать несколько платформенных приложений, используя их сервис и просто пропинговать конечную точку, когда хотите отправить уведомление. Он также поставляется с поддержкой из коробки для

  • Отправка на дополнительные платформы (GCM / Android / Baidu Push, телефон WNS / MPNS / Windows, ADM / Kindle, SMS, функции AWS Lambda, производители очередей SQS, конечные точки HTTP / HTTPS, SMS, электронная почта, MacOSX и т. Д.)
  • обращение службы обратной связи APNS, чтобы предотвратить санкции APNS за спам незарегистрированных устройств — вам придется реализовать это самостоятельно, если вы будете использовать APNS
  • Темы (единая конечная точка для всех ваших пользователей или подмножеств ваших пользователей, позволяющая отправлять тысячи уведомлений за один звонок)
  • Инструментарий с CloudWatch и вход с CloudTrail отслеживать ваши скорости доставки, сбои и т. д. и предоставлять оповещения на основе уровней метрик
  • Service Mock для интеграционных тестов
  • SDKs, документация и примеры для большинства основных языков

Между сохранением открытых соединений на неопределенное время (для каждого приложения на нескольких шлюзах), повторной отправкой сбойных уведомлений в потоке и управлением службой обратной связи APNS является просто огромной PITA. Кроме того, если вы активируете какой-либо из их лимитов обслуживания, они отзовут ваш сертификат или хуже, и вы не будете отправлять уведомления, пока не обновите свою систему новой.

И пусть кто-нибудь еще справится со всеми этими головными болями: D

0

Другие решения

Мои собственные решения этой проблемы:

-Серия выделенных серверов с собственным IP-адресом

-Мониторинг и регулировка скорости исходящего запроса во время передачи большого объема, чтобы избежать отключения DDOS.

Вторичная проблема, которую я обнаружил, заключалась в том, что определенные операторы телефонной связи ограничивают количество посылок, которые вы можете отправить им, прежде чем вас отключат. Таким образом, даже если ограничение APNS составляло 15 соединений или около того, я не мог даже заставить столько работать на полной скорости, не превысив лимит для определенных операторов и не допуская, чтобы их серверы закрывали меня. Это может быть проблемой, специфичной для японских операторов, хотя (docomo, в частности, был строгим, я выделил выделенный сервер только для них с большими настройками нагрузки передачи).

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector