Sobes.tech
Senior

150 миллион колдонуучуну колдоо менен масштабдуу билдирүү системасын долбоорлоо, 75 миллион DAU, 225 миллион MAU, 1.2М окулуш / 300k жазуу чеги QPS, 5 миллион бир убакта колдонучулар, жылына 60 PB жаңы маалымат, жылдык 30% өсүш, SLA 99.95%, p99 <200 ms окуу үчүн, <300 ms жазуу үчүн. КОНТЕКСТ WhatsApp сыяктуу, 1:1 жана топ чаттарды колдогон, билдирүүлөрдү жеткирүүнү камсыздаган, колдонуучулардын онлайн абалын көрсөтүүчү жана мультимедиалык файлдарды (сүрөттөр, видеолор, аудио) өткөрүүчү бөлүштүрүлгөн билдирүү системасын долбоорлоо керек. Система жогорку жеткиликтүүлүк жана төмөн кечигүү менен камсыз кылышы керек, жогорку параллелизмди колдошу жана глобалдык масштабда кеңейиши керек. Функционалдык талаптар - жеке (1:1) жана топ чаттарды колдоо, катышуучуларды кошуу/алып салуу мүмкүнчүлүгү менен - тексттик билдирүүлөрдү жана мультимедиалык файлдарды жөнөтүү жана кабыл алуу Кызматтар же кардарлар деңгээлинде end-to-end шифрлөө механизми так ишке ашырылганы көрүнбөйт, жалпы эскертүү менен гана. - chat_id же user_id боюнча базалардын sharding жана репликациясынын так сүрөттөмөсү жок, масштабдуулук жана каталарга туруктуулук үчүн. - Offline билдирүүлөрдү жана жеткирүү тастыктарынын синхрондоштуруу үчүн так компонент же механизми жок. - Жүктүн балансын базалар жана кызматтар арасында, өзгөчө чокулук учурунда, кантип жүргүзүлөрү так эмес. **Көз караштар жана эскертүүлөр:**

sobes.tech AI

AIден жооп

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

  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. Мониторинг и алертинг

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

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