Pomysły na skalowanie czatu w AWS?

Próbuję wymyślić najlepsze rozwiązanie do skalowania usługi czatu w AWS. Wymyśliłem kilka potencjalnych rozwiązań:

Redis Pub / Sub - Gdy użytkownik nawiązuje połączenie z serwerem, który subskrybuje ten identyfikator użytkownika. Gdy ktoś wyśle ​​wiadomość do tego użytkownika, serwer wykona publikację na kanale z identyfikatorem użytkownika. Serwer, z którym użytkownik jest połączony, otrzyma wiadomość i popchnie ją do odpowiedniego klienta.

SQS - pomyślałem o stworzeniu kolejki dla każdego użytkownika. Serwer, z którym użytkownik jest połączony, będzie odpytywał (lub używał SQS long-polling) tej kolejki. Po wykryciu nowej wiadomości zostanie ona przekazana użytkownikowi z serwera.

SNS - Naprawdę podobało mi się to rozwiązanie, dopóki nie odkryłem limitu 100 tematów. Musiałbym utworzyć temat dla każdego użytkownika, który obsługiwałby tylko 100 użytkowników.

Czy można je przeskalować za pomocą AWS? Czy podejście SQS jest opłacalne? Jak długo zajmuje AWS dodanie wiadomości do kolejki?

questionAnswers(6)

yourAnswerToTheQuestion