написать запрос в базу данных - PullRequest
0 голосов
/ 06 апреля 2020

Я работаю над приложением чата, которое должно обрабатывать 100k входящих сообщений в секунду. Я думаю о go с postgresql, но не уверен, подходит ли он.

Функция чата
- отдельный чат или групповой чат
- удалить чат, как только он доставляется и читается всеми вовлеченными пользователями
- имеет статус доставки / чтения сообщений, например whatsapp.
- полученный чат будет храниться локально на пользовательском устройстве

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

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

Не уверен, что я задаю правильные вопросы, но каков конечный результат: не должно быть значительной задержки при обработке 100k сообщений в секунду в приложении чата.

1 Ответ

1 голос
/ 06 апреля 2020

Возможно, вы используете неверную технологию в качестве своей базы. Взгляните на что-то вроде ActiveMQ, Kafka или даже Redis pub-sub. Это позволит вам лучше справляться с нагрузкой, выполнять sh publi sh и получать необходимую механику типов, в то же время позволяя передавать данные в базу данных, если это действительно необходимо.

Если вы Google для чата и любой из перечисленных выше технологий, вы должны найти более пары примеров, чтобы bootstrap ваши знания. Вот один https://www.sothawo.com/2017/07/a-simple-web-based-chat-application-built-with-kotlin-vaadin-spring-boot-and-apache-kafka/, который показывает приложение чата с kafka.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...