Всем доброго вечера Разрабатываем чат-приложение с кастомными видами сообщений (разные типы/подтипы,

разные уровни доступа к сообщениям).
Уже сейчас насчитывается 6 различных паттернов доступа к истории, плюс есть еще вероятность, что их количество увеличится в двое.
Плюс сервис должен будет выдерживать пиковую нагрузку в 10к на начальном этапе, в перспективе больше.
Подскажите, какие сервисы стоит рассматривать в качестве хранилища истории сообщений для такой задачи?
Пока рассматриваем аврору, динамо, рдс + ручное поднятие монги или кассандры в екс.
От документ-дб и кей-спейсес пока что отказались, так как непонятен уровень совместимости с монгой/кассандрой.

10 ответов

25 просмотров

Глянуть в сторну Pulsar может,

А как именно вы рассматриваете ?

А какие требования к latency? Плюс 10к запросов - наверное кешировать многое можно?

Azamat-Zhurtbayev Автор вопроса
Nikolay
А как именно вы рассматриваете ?

В первую очередь решение должно выдержать 10к рпс. Должна быть возможность скейлить решение вверх. Плюс стоимость решение - тут будет полезно скейлиться вниз, когда нет нагрузки.

Azamat-Zhurtbayev Автор вопроса
Al T
А какие требования к latency? Плюс 10к запросов - ...

По лэтенси не критично, но до секунды это нормально. 10к в контексте чатов - это только новые сообщения (вставки).

Azamat Zhurtbayev
В первую очередь решение должно выдержать 10к рпс....

Если 10 к на чтение ,то выдержит любая база. Если это на запись , то реляционка потянет только на ssd, если вы планируете делать commit после каждой вставки .т.е это скорее будет предел для Авроры,postgre,mysql И в дальнейшем вам нужно будет делать шардирование и разносить чаты по разным инстансам. Т.е у вас будет много инстансов mysql, например и вы будите в приложении или где -то ещё делать роутинг на нужный инсианс. Ну или взять диманодб.

Azamat-Zhurtbayev Автор вопроса
Nikolay
Если 10 к на чтение ,то выдержит любая база. Если...

10к - подразумевается на запись (делаем чаты, и там чтение происходит намного реже, чем запись). да, коммит после каждой вставки. по поводу ограничения спасибо, будем иметь в виду. новые сообщения будут пересылаться через message-broker + websockets. чтение будет происходить для подгрузки исторических сообщений.

Azamat Zhurtbayev
По лэтенси не критично, но до секунды это нормальн...

ну вы там написали еще и коммит (fsync?) после каждой вставки, это прям сурово для чатика... RDBMS с single master масштабируется шардированием (после невозможности scale up) но это удовольствие то ещё )) Возможно Динамо и ваш вариант, вы там писали что на каждый паттерн нужен отдельный индекс но это далеко не всегда так..

Azamat-Zhurtbayev Автор вопроса
Al T
ну вы там написали еще и коммит (fsync?) после ка...

а что такого в коммите после каждого сообщения, если цель не потерять ниодного сообщения?

Azamat Zhurtbayev
а что такого в коммите после каждого сообщения, ес...

Да ничего собственно, просто просадка по производительности по сравнению с фсинк каждую секунду. Дешевле параллельно хранить последние 5 минут в редисе или очереди. Я наверно вообще в базу не писал напрямую сразу а в кинесис или кафку. А сообщения передавал через паб саб

Похожие вопросы

Обсуждают сегодня

Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
1. https://www.kaggle.com/code/ahmadrezagholami2001/housing-estimation-linear-regression 2. https://www.kaggle.com/code/ahmadrezagholami2001/uncovering-quality-in-wines-logis...
Ahmadreza
1
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
Коллеги, может знает кто, можно ли цвет бейджа счётчика в BackendMenu менять без бубнов?
Alex Blaze
3
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
Привет!) Кто как юзает переменные в строках?) Чисто ради интереса Вот так: echo "У меня {$bananasAmount} бананов"; Или вот так: echo "У меня ${bananasAmount} бананов";
Виталий
3
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
разработчик ботов скидывает портфолио, боты которые он уже создал. А вот как узнать что это именно он их создал?
Gosudar
4
Карта сайта