Здравствуйте. Задача состоит в том, чтобы сделать real-time чат в

мобильном приложении. После передачи сообщения пользователем через веб-сокеты, для основного и долговременного хранения сообщений будет использоваться PostgreSQL. Изначально для оповещения системы о новом сообщении в PostgreSQL я хотел использовать Listen/Notify, это такая система (от PostgreSQL), которая позволяет уведомлять сервер о новом сообщении в базе данных. Но Listen/Notify может подойти, наверное, только для самых базовых задач при разработке приложения, потому что нагрузки он не выдерживает вообще.

Вместо Listen/Notify я принял решение взять RabbitMQ. После добавления сообщения в PostgreSQL, это сообщение отправляется в очередь RabbitMQ, которая уведомляет API сервер о том, что пришло новое сообщение. Далее, когда API сервер увидел новое сообщение, он отправляет его пользователю, которому было это сообщение направлено.

У меня будет single instance сервер PostgreSQL, single instance RabbitMQ и API сервер. На этом моменте у меня появились сомнения насчет RabbitMQ. Зачем мне RabbitMQ для уведомления API сервера, если у меня он будет один, и он будет узнавать о появлении нового сообщения даже раньше, чем PostgreSQL и RabbitMQ? Получается, что я просто могу отправить это сообщение сразу после добавления в PostgreSQL получателю?
Насчет нагрузок тут все очень неоднозначно. Первое время точно нагрузки будут не прям огромные (конечно, точно предугадать невозможно). Взять RabbitMQ я хотел для того чтобы больше перестраховаться, если пойдет нагрузка, но как я написал ранее, я сейчас вообще сомневаюсь, что RabbitMQ нужен, если будет один API сервер. Заранее огромное спасибо за ответ

5 ответов

50 просмотров

Стикер

🐾- Автор вопроса

Я ничего не жду, я пытаюсь разобраться что будет лучше конкретно для чата. Или если я сначала хотел взять Кафку то мне нужно чисто из принципа её брать?) если бы я тут информацию о Кафке написал то вам бы это что то дало?)

Стикер

На одном сервере норм делать обычный прям из туториалов по всяким signalr/socket.io Если хотите масштабирования, то уже не подойдёт. Но о каких нагрузках в уберпике идёт речь?

🐾- Автор вопроса

Стикер

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

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

Добрый день! Удалил все файлы с переменными из проекта, получил Error: release deploy: process resources: error validating adoptable resources: adoption validation failed: re...
Evgheni Mad
2
@aigrychev, @ilya_lesikov добрый день! а поддерживает ли werf helm xxxx или werf bundle xxxx работу с сабчартами через http-прокси? (сработает ли использование HTTP_PROXY/HTTP...
Сергей Голод
4
Привет! Вопрос про werf helm Приложение деплоится через werf helm upgrade --atomic Иногда(все условия для воспроизведения до конца непонятны, но есть версия, что это происходи...
𝓐𝓵͢͢͢𝓮𝔁 C
2
Всем привет. Werf v2.10.5 При удалении релиза вместе с неймспейсом (werf dismiss --namespace namespace_name) Сыпятся ошибки ┌ Waiting for resources elimination: namespaces/rel...
Vitalik Petrov
1
А как подмаунтить каталог если я не буду стапель юзать, а просто Докерфайл?
yoshi kakbudto
3
Всем привет. Сегодня добавили в приложение дополнительный образ nginx, в который докидывается системная статика прям в образ. При деплое бандлами деплоилось 200+ джоб(клиентов...
Владимир Муковоз
6
Добрый день, после перехода с версии 1.2 на 2.10 werf cleanup начал удалять использующиеся теги, и до и после обновления использовались дефолтные политики keepPolicies Подскаж...
Дмитрий
29
Вопросик не совсем werf. Но вдруг мы подскажите воркэраунд или ещё что-нибудь. Могу ли я как-нибудь в моменте деплоя внутри heml рендера получить хэшсумму файла шаблона (./tem...
Alex Подрябинкин
11
Друзья, добрый день. Прошу подсказать с базовым вопросом по использованию CI переменных gitlab в werf.yaml. Хочу в beforeInstall использовать env переменную с токеном. Мне нуж...
Anton Zol
10
Добрый день, подскажите пожалуйста, а как поле project (в werf.yaml) параметризовать ? werf converge —project <APP_NAME> в одном общем репо держим 1 хельм чарт и деплоим с ...
Sulaymon
5
Карта сайта