Ideen zur Skalierung von Chats in AWS?

Ich versuche, die beste Lösung für die Skalierung eines Chat-Dienstes in AWS zu finden. Ich habe ein paar mögliche Lösungen gefunden:

Redis Pub / Sub - Wenn ein Benutzer eine Verbindung zu einem Server herstellt, abonniert dieser Server die ID dieses Benutzers. Wenn jemand eine Nachricht an diesen Benutzer sendet, führt ein Server eine Veröffentlichung auf dem Kanal mit der ID des Benutzers durch. Der Server, mit dem der Benutzer verbunden ist, empfängt die Nachricht und sendet sie an den entsprechenden Client.

SQS - Ich habe darüber nachgedacht, eine Warteschlange für jeden Benutzer zu erstellen. Der Server, mit dem der Benutzer verbunden ist, ruft diese Warteschlange ab (oder verwendet SQS Long-Polling). Wenn eine neue Nachricht entdeckt wird, wird sie vom Server an den Benutzer weitergeleitet.

SNS - Ich mochte diese Lösung wirklich, bis ich die 100-Themen-Grenze entdeckte. Ich würde ein Thema für jeden Benutzer verursachen müssen, der nur 100 Benutzer stützen würde.

Gibt es noch andere Möglichkeiten, wie Chat mithilfe von AWS skaliert werden kann? Ist der SQS-Ansatz realisierbar? Wie lange dauert es, bis AWS eine Nachricht zu einer Warteschlange hinzufügt?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage