2016-07-04 10 views
0

Ich möchte die Architektur von Echtzeit-Chat für Millionen von Benutzern wie WhatsApp wissen.Java Chat Socket Milion Clients

ich implementiert einen Chat, aber ich muss mehr Server verwenden, um mehr Kunden

ich eine andere Frage zu lesen zu behandeln, aber ich habe immer noch Zweifel. Sagen Sie mir, wenn das, was ich sage, richtig ist:

Clients verbinden mit Load Balancer, die entscheiden, Verbindung zu einem der WhatsApp-Server zu geben. Beispiel clientâ zu Server1 verbinden, verbinden ClientB zu Server2

-Wenn clientâ mit ClientB kommunizieren möchte, eine Nachricht an den Server1 sendet nun diese wie Sie wissen, in welchem ​​Server ist ClientB? Aufrechterhaltung der Skalierbarkeit für Millionen von Benutzern)

Wie implementiert man einen Chat, um Millionen von Benutzern zu verwalten?

Antwort

1

Der Schlüssel ist die Datenbank (oder jedes andere Persistenzsystem), wo alle Eingaben von den Clients gespeichert werden. Normalerweise ist in diesen Skalen ein key-value NoSql Database geeignet, wie Apache Cassandra, Amazon Dynamo oder . Diese Datenbanken sind optimal für schnelles Einfügen und Abrufen nur durch PK.

Alle Server müssen zustandslos sein, daher verbindet sich Client A mit Server A und sendet eine Textnachricht und eine Zielclient-ID. Dies wird in der DB gespeichert. Dann verbindet sich Client B mit Server B, der zur Datenbank geht und den Text abruft.

+0

Danke, aber wenn ich eine große Datenbank verwende, wenn ich Millionen von Benutzern haben, müssen jeder Server unter Millionen von Abfragen suchen, was Sie wollen.Dies dauert Zeit – John

+0

Wenn Sie eine Zeile von PK (wie Client-ID) dann holen Die Datenbank-Engine kann dafür sorgen. Alle großen sozialen Apps nutzen diese Architektur. –

+0

Hier ist eine sehr detaillierte Beschreibung der Architektur, die Instagram von ihrem Tech-Blog verwendet. Sie verwenden redis (Open-Source-Schlüsselwert nosql db) für ihren Haupt-Feed. Sie verwenden auch traditionelle RDBMS und Cloud-Speicher, lesen Sie einfach alles darüber http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hunderds-of-instances –