Я пытаюсь найти лучшее решение для масштабирования службы чата в AWS. Я придумал пару возможных решений:
-
Redis Pub/Sub - когда пользователь устанавливает соединение с сервером, который сервер подписывается на этот идентификатор пользователя. Когда кто-то отправляет сообщение этому пользователю, сервер будет выполнять публикацию на канале с идентификатором пользователя. Сервер, к которому подключен пользователь, получит сообщение и нажмет его на соответствующий клиент.
-
SQS - Я думал о создании очереди для каждого пользователя. Сервер, к которому подключен пользователь, будет опросить (или использовать длительный опрос SQS) в очереди. Когда новое сообщение будет обнаружено, оно будет перенаправлено пользователю с сервера.
-
SNS - мне действительно понравилось это решение, пока я не узнал 100 ограничений темы. Мне нужно создать тему для каждого пользователя, которая будет поддерживать только 100 пользователей.
Можно ли их использовать в других чатах, используя AWS? Является ли подход SQS жизнеспособным? Сколько времени требуется AWS для добавления сообщения в очередь?