Рекомендации по инфраструктуре для многоплатформенных push-уведомлений - PullRequest
3 голосов
/ 27 мая 2011

мы планируем внедрить push-приложения в наши мобильные приложения (для телефонов и планшетов на Android, iPhone, iPad и Blackberry).

Каждые 15 минут мы получаем новый набор данных.Эти данные хранятся в базе данных MySQL.Затем мы проверим, соответствуют ли эти данные подпискам наших пользователей (данные основаны на местоположении, поэтому пользователь будет подписываться на уведомления для одного или нескольких местоположений).Все пользователи с соответствующими данными должны быть уведомлены через службу push-уведомлений их соответствующей платформы.

Емкость сервера не является проблемой.Мы в основном используем PHP и хотели бы остаться с ним, но готовы перейти на другие языки, если это необходимо.

Мои вопросы:

  1. Можете ли вы дать мне советна технологии для использования на стороне сервера?Он должен очень хорошо масштабироваться (я ожидаю много подписок на разных платформах), в идеале работать с обычными push-шлюзами и быть достаточно быстрым для обработки всех уведомлений до поступления следующего пакета данных.

  2. У меня есть опасения относительно скорости доставки этих уведомлений.Допустим, у нас 500 000 подписок и данные соответствуют 50%, что означает, что нам нужно отправить 250 000 уведомлений за 15 минут.У вас есть опыт работы с большими числами и push-уведомлениями?

Большое спасибо, Марк.

1 Ответ

0 голосов
/ 05 июля 2011

Хотя PHP отлично подходит для создания динамического веб-контента, я чувствую, что ему не хватает некоторых важных функций для выполнения высокопроизводительных фоновых операций, подобных этой.Я бы выбрал язык, который поддерживает многопоточность (мои личные предпочтения привели бы меня к C # 4.0, но это также зависит от вашей серверной платформы).

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...