Система опирается на микросервисную архитектуру с отдельными сервисами для обмена сообщениями, управления группами, уведомлений и медиа. Message broker (например, Apache Kafka) выступает в качестве центрального звена, обеспечивая надёжную, упорядоченную и масштабируемую доставку сообщений всем компонентам.
Для больших групп fan-out on read предпочтительнее, чем fan-out on write, чтобы избежать лишних операций записи:
Producer → Kafka Topic (разделён по group_id)
→ Consumer Workers → WebSocket Gateway → Connected Clients
Недоставленные сообщения ставятся в очередь и доставляются через push-уведомления (APNs/FCM) для офлайн-пользователей.
Порядок сообщений обеспечивается смещениями партиций Kafka для каждого group_id. Сообщения сохраняются в Cassandra, разделённые по (group_id, timestamp) для эффективных запросов по диапазону времени.
В этой архитектуре системы fan-out on read предпочтительнее fan-out on write, потому что это снижает write amplification при распределении сообщений среди тысяч членов группы.
Новый — ещё не проверен сообществом
Вы