2016-12-21 3 views
0

Wir erstellen eine XMPP-Anwendung, in der wir ejabberd als unseren Server gewählt haben. Wir haben viele Änderungen auf Protokollebene vorgenommen, um sie unserem Anwendungsfall anzupassen. Wir sind jedoch nicht zufrieden damit, wie Ejabberd Anwendungslogik mit seinen mnesia Backends koppelt. Wir möchten alle mnesia-Tabellen mit Ausnahme derjenigen, die Sitzungen enthalten, auf andere Knoten verschieben, um unser System von der Wartung und dem Debuggen zu entkoppeln und Ressourcenkompromisse mit der ejabberd-Steuerungslogik zu vermeiden. Wir wissen, dass Latenz leiden wird, wenn dies der Fall ist. Unsere Frage ist, ist es ein besseres Design mit diesem Ansatz? Werden wir mehr Probleme mit dem Vertrieb haben? Oder was noch? Bitte geben Sie einen detaillierten Grund für Ihre Option an.Ejabberd verbindet Anwendungslogik mit Backends

Antwort

0

Eigentlich sind Module, die Daten speichern, rund um das Konzept des Backends konzipiert. Sie sind nicht zu Mnesia eng. Sie können die API für jedes Modul im vorhandenen Code überprüfen. Sie werden sehen, dass normalerweise Module zum Speichern in relationaler DB, Riak, Redis usw. verfügbar sind.

Sie können genau dieselbe API verwenden, um eigene benutzerdefinierte Backends zu implementieren.

+0

Was sagen Sie über das Verschieben der Tabellen zu Nicht-Ejabberd-Knoten, damit sie von einem anderen Dienst verwendet werden können? Auf diese Weise liest und schreibt ejabberd das Backend durch Nachrichtenübermittlung unter Verwendung einer speziellen Nachrichten-API. –

+0

Nun, Sie können Backend-Module schreiben, die dank der ejabberd-Backend-API alles machen, was Sie wollen. Tatsächlich können diese Backend-Module eine HTTP/ReST-API aufrufen. Dies ist eine ziemlich häufige Verwendung für diese ejabberd-Backend-API. –