XMPP/Jabber-Server mit einer großen Anzahl von Benutzern/Clients

Ich arbeite an einer Anwendung zur Bereitstellung eines Chat-Dienstes für Benutzer einer sozialen Website. Bevor ich damit anfing, wusste ich nichts über das XMPP-Protokoll und ich habe fast 50 % des grundlegenden Chat-Betriebs auf dem Server entwickelt, ohne dieses Protokoll zu befolgen. Aber jetzt möchte ich dieses Protokoll und einen der verfügbaren Open-Source-Server verwenden und mein eigenes Programm wegwerfen (was für mich sehr schwierig ist).

Ich brauche einen XMPP-Server, der

  • ist skalierbar
  • kann zwischen 10 und 15 Millionen Benutzer verwalten
  • läuft auf Linux und/oder Windows
  • ist Open-Source

Ich brauche die meisten ihrer Verbindungen die meiste Zeit am Leben.

Wir möchten alle Nachrichten sofort zustellen, auch wenn sich der Benutzer nicht in der Anwendung befindet (z. B. in Android durch Ausführen einer Dienstaktivität/eines Threads).

Ich brauche Hilfe, bitte stellen Sie ein Jabber/XMPP-Server-Open-Source-Programm vor, das das kann (und unter Linux und/oder Windows läuft).

Ich muss ein Programm wie Nimbuzz mit einigen Unterschieden und Anpassungen bereitstellen.

Hammer, ich habe deine Frage bearbeitet. Bitte überprüfen Sie, ob ich Ihre Absichten nicht geändert habe, und bearbeiten Sie Ihre Frage, wenn etwas nicht stimmt oder Sie weitere Details haben.

Antworten (2)

Offenlegung: Ich arbeite an MongooseIM.


Ich empfehle einen der Erlang-basierten Server: entweder MongooseIM oder ejabberd . MongooseIM war ursprünglich ein Fork von Ejabberd, aber die Codebasen haben sich in den letzten Jahren ziemlich stark voneinander entfernt.

Diese Server heben sich von den anderen Optionen nicht in Bezug auf den Funktionsreichtum ab ( sie bieten jedoch viele Funktionen ), sondern weil sie die von der Erlang/OTP-Plattform angebotenen Skalierbarkeitsmechanismen nutzen. Um deine Punkte anzusprechen:

ist skalierbar

Erlang ist erstaunlich skalierbar. WhatsApp ist das neueste Aushängeschild für die Skalierbarkeit von Erlang, aber wenn Sie googeln, finden Sie noch viel mehr.

kann zwischen 10 und 15 Millionen Benutzer verwalten

Wenn Sie auf Millionen von Benutzern skalieren möchten, sollten Sie darauf vorbereitet sein, einen Cluster aus kräftigen Maschinen mit viel RAM aufzubauen (beide Server sind speichergebunden). Es gibt Bereitstellungen in freier Wildbahn mit ~ 2 Millionen Benutzern, von denen ich weiß. Der League of Legends -Chat betreibt mehrere föderierte Cluster, die 70 Millionen Benutzer verwalten, aber sie verwenden einen sehr stark modifizierten Ejabberd.

läuft auf Linux und/oder Windows

Sie sind wahrscheinlich besser dran, unter Linux zu laufen. Erlang funktioniert unter Windows, aber ich bin mir nicht sicher, wie gut groß angelegte Anwendungen auf der Plattform funktionieren.

ist Open-Source

Ja, beide sind Open Source und unter der GPL lizenziert.

Danke, ich habe einige Artikel über MongooseIM und Ejabberd gesucht und gelesen und fand sie erstaunlich. ABER es gibt ein Problem und es ist die ERLANG-Sprache. Es hat sehr, sehr harte und unterschiedliche Syntax und Strukturen. Wie ich schon sagte, muss ich dem Server einige Funktionen für Benutzer hinzufügen und meine eigene Client-App schreiben. Vielleicht könnte ich Cluster verwenden (was ist der beste Kandidat für diese Begriffe). Ich brauche deine Hilfe. BITTE lass mich nicht scheitern.
Hey Hammer – Erlang hat eine seltsame Syntax, aber es ist nicht sehr schwer zu lernen. Ejabberd/MongooseIM-Module sind recht einfach zu schreiben. ( process-one.net/en/wiki/ejabberd_module_development ) ( github.com/esl/MongooseIM/wiki/hooks-and-handlers ). Wie viel Zeit sind Sie bereit zu investieren?
Ich möchte mein Projekt letztendlich in bis zu 6 Monaten abschließen. Bearbeiten: Ich habe angefangen, die clientseitige App zu programmieren.

ejabberd hat eine große Anzahl von groß angelegten Bereitstellungen und wird von Nimbuzz verwendet.

Die ejabberd-Community hat damit begonnen, eine Webseite mit Anwendungsfällen für den Einsatz von ejabberd-XMPP-Servern zusammenzustellen. Dies ist nur eine kleine Untergruppe von ihnen, die Varianten von Ejabberd (Like Business Edition) und nur diejenigen enthält, die ihre Verwendung von Ejabberd offengelegt haben (ich kenne viel mehr Fälle, die die Verwendung nicht offenlegen möchten).

Referenz: Anwendungsfallseite auf der ejabberd-Dokumentationsseite .