Архитектура облачного решения MULTIPUSHED
Термины
- Пуш-сообщение: всплывающие сообщения на экране мобильного устройства пользователя.
- Токен доступа (accessToken): выдается в системе управления системе управления MULTIPUSHED для каждого мобильного приложения
- Клиентский токен (clientToken): выдается на конкретное мобильное устройство при установке мобильного приложения. Потребуется для отправки пуш-сообщений. Клиентские токены удаляются при неактивности в 60 дней.
Основные компоненты
- PUB. Сервис публикации (несколько экземпляров) – HTTPS API для публикации пуш-сообщений
- SUB. Сервис подписки (множество экземпляров) – группа серверов реализующих соединение с мобильными устройствами по протоколу WebSockets Secure
- Router. Внутренний сервис-оркестратор доставки сообщений
- APNS. Внутренний сервис доставки сообщений через Apple Push Notification service
- FCM. Внутренний сервис доставки сообщений через Firebase Cloud Messaging
- HPK. Внутренний сервис доставки сообщений через Huawei Push Kit
- Offline Database. База данных для хранения токенов, пользователей и настроек
- Online Database. База данных для хранения месторасположения клиентских токенов и временных данных
- Broker. Брокер сообщения для обмена данными между сервисами

Для обеспечения высокой доступности и высокой производительности внутренняя инфраструктура MULTIPUSHED использует кластеризованные решения и надежные датацентры.
Схема потоков данных
Сценарий подключение нового клиента:
- Клиенты (устройства) подключаются к одному из экземпляров SUB и поддерживают с ним постоянное подключение WebSockets Secure.
- Сервис Router проверяет есть ли новые пуш-сообщения для данного клиента и доставляет их.
Сценарий отправки пуш-сообщения:
- PUB получает запрос на отправку пуш-сообщения. В состав запроса входит клиентский токен и сообщение пуша.
- Выполняет необходимые проверки. Например, зарегистрирован ли токен в системе.
- Если клиент онлайн, отправляет сообщение в Broker с указанием очереди, которую слушает экземпляр Router к которому подключен клиент.
- Router получает сообщение и понимает, куда нужно переслать дальше (SUB, APNS и т.п.).
- Экземпляр SUB получает сообщение от брокера и пересылает его клиенту через WebSocket.
- Мобильное приложение подтверждает доставку в рамках установленного подключения с SUB.