Я работаю над приложением чата, которое должно обрабатывать 100k
входящих сообщений в секунду. Я думаю о go с postgresql
, но не уверен, подходит ли он.
Функция чата
- отдельный чат или групповой чат
- удалить чат, как только он доставляется и читается всеми вовлеченными пользователями
- имеет статус доставки / чтения сообщений, например whatsapp.
- полученный чат будет храниться локально на пользовательском устройстве
Поток такой следуйте:
- для каждого нового входящего сообщения (отправляемого из сокета io) нам нужно записать в таблицу сообщений и таблицу доставки сообщений
- скажем, я в группе из 50 человек, мне нужно создать каждую строку для каждого члена (49 строк) в таблице доставки сообщений, а также поверх отправленного сообщения в таблице сообщений.
- после того, как пользователь получил или прочитал, нам нужно обновить статус до Таблицы доставки сообщений, а также локальной базы данных в пользовательском приложении
- если весь пользователь принят и прочитан, нам нужно удалить все соответствующие сообщения в Таблица сообщений и таблица доставки сообщений
Примечание:
- данные должны храниться в собственном помещении.
- не будет подписываться ни на какую платную услугу.
Не уверен, что я задаю правильные вопросы, но каков конечный результат: не должно быть значительной задержки при обработке 100k сообщений в секунду в приложении чата.