Статья посвящена построению масштабируемой распределённой системы обмена сообщениями, подобной WhatsApp, с такими требованиями, как: частные чаты (1:1), отправка текста и изображений, отображение времени последнего посещения и подтверждения прочтения. Система должна обеспечивать низкую задержку, высокую доступность и отсутствие лагов, являясь по сути системой реального времени. Архитектура состоит из чат-сервера, клиентских приложений и базы данных, с акцентом на модели доставки сообщений, включая модели «вытягивания» (pull) и «толкания» (push). Модель «толкания» использует WebSockets для обеспечения передачи сообщений в реальном времени, а обработчик WebSockets поддерживает открытые соединения с активными пользователями. Система также включает в себя менеджер WebSockets и службу сообщений для отслеживания соединений и хранения сообщений. Статья рассматривает различные варианты использования, например, когда оба пользователя онлайн или офлайн, и как сообщения хранятся и извлекаются из базы данных. Также описывается схема базы данных, включая использование NoSQL-баз данных, таких как AWS DynamoDB. Цель системы — мгновенная доставка сообщений при сохранении эффективности системы. В заключение статьи говорится, что система обмена сообщениями должна быть быстрой, надёжной и масштабируемой, а модель «толкания» с WebSockets обеспечивает общение в реальном времени. Автор статьи обладает более чем десятилетним опытом работы с масштабируемыми высокопроизводительными распределёнными системами, имеет опыт работы с облачными нативными архитектурами и оптимизацией баз данных.
dev.to
Designing a Scalable and Real-Time Messaging System
