Sobes.tech
Senior

150 milyon istifadəçini dəstəkləyən, 75 milyon DAU, 225 milyon MAU, 1.2M oxuma / 300k yazma zirvəsi QPS, 5 milyon eyni vaxtda istifadəçi, ildə 60 PB yeni məlumat, illik 30% artım, SLA 99.95%, p99 <200 ms oxumaq üçün, <300 ms yazmaq üçün, miqyaslana bilən mesajlaşma sistemi layihələndirmək. KONTEKST WhatsApp-ə bənzər, 1:1 və qrup söhbətlərini dəstəkləyən, mesajların çatdırılmasını təmin edən, istifadəçilərin onlayn statuslarını göstərən və multimedia fayllarını (foto, video, audio) ötürən paylanmış mesajlaşma sistemi layihələndirmək lazımdır. Sistem yüksək mövcudluğu və aşağı gecikməni təmin etməli, yüksək paralelliyi dəstəkləməli və qlobal miqyasda genişlənə bilməlidir. FUNKSİONAL TƏLƏBLƏR - Şəxsi (1:1) və qrup söhbətlərini dəstəkləmək, iştirakçıların əlavə və ya çıxarılması imkanı ilə - Mətn mesajları və multimedia fayllarını göndərmək və qəbul etmək Xidmətlər və ya müştərilər səviyyəsində end-to-end şifrələmə mexanizminin aydın tətbiqi görünmür, ümumi qeyd xaricində. - chat_id və ya user_id əsasında verilənlər bazalarının sharding və replikasiyasının aydın təsviri yoxdur, miqyaslana bilmək və nasazlığa davamlılıq üçün. - Offline mesajların və çatdırılma qəbzlərinin sinxronizasiyası üçün aydın komponent və ya mexanizm yoxdur. - Yükün paylanması və bazalar arasında, xüsusən pik vaxtlarda, necə həyata keçirildiyi aydın deyil. **Əhəmiyyətli diqqət yetirilməli nöqtələr:**

sobes.tech Süni İntellekt

AI-dan cavab

При проектировании масштабируемого мессенджера с такими требованиями важно учесть несколько ключевых аспектов:

  1. Шардинг и репликация данных

    • Разделение данных по user_id или chat_id для распределения нагрузки между базами.
    • Репликация для обеспечения отказоустойчивости и быстрого чтения.
  2. Обработка офлайн-синхронизации и delivery receipts

    • Хранение сообщений на сервере до подтверждения доставки.
    • Механизмы push-уведомлений и синхронизации при повторном подключении.
  3. Балансировка нагрузки

    • Использование балансировщиков на уровне API и сервисов.
    • Горизонтальное масштабирование микросервисов.
  4. Обеспечение SLA и низкой задержки

    • Кэширование часто запрашиваемых данных (например, online-статусов).
    • Использование быстрых хранилищ (in-memory, NoSQL) для сообщений и статусов.
  5. Мультимедийные файлы

    • Отдельное хранилище (CDN, Object Storage) для медиа.
    • Асинхронная загрузка и доставка.
  6. Безопасность

    • End-to-end шифрование желательно реализовать на клиенте.
    • Сервер отвечает за маршрутизацию и хранение зашифрованных данных.
  7. Архитектура сервисов

    • Микросервисный подход: отдельные сервисы для сообщений, пользователей, мультимедиа, уведомлений.
    • Очереди сообщений (Kafka, RabbitMQ) для обработки пиковых нагрузок.
  8. Мониторинг и алертинг

    • Метрики производительности, задержек, ошибок.
    • Автоматическое масштабирование при росте нагрузки.

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