2013-03-28 8 views
6

Repliziert es alle Daten zu jedem Knoten oder speichert es Datenfragmente auf jedem Knoten und holt dann jedes benötigte Fragment zur Laufzeit aus verschiedenen Knoten? Oder wie funktioniert das?Wie verwaltet Ejabberd Datenbanken für Clustering?

Funktioniert das Clustering immer noch korrekt, wenn Sie anstelle von Mnesia MySQL verwenden?

Antwort

3

Mnesia kann Clustering ziemlich einfach unterstützen, aber es funktioniert require some tinkering in einer interaktiven erl Sitzung. Was den genauen Mechanismus anbetrifft, wird alles von Erlang und Mnesias eingebautem Clustering gehandhabt, und es übersteigt meine Sachkenntnis. Sie können es anweisen, Kopien (Replikate) auf jedem Knoten zu speichern, aber es ist ein feinkörniges Steuerelement, das auf Ihre Bedürfnisse abgestimmt werden muss, wie der erste Kommentar von this document andeutet. Ich kann leider keine Informationen darüber finden, wie die Fragmentierung funktioniert, obwohl ich vermute, dass Mnesien (je nach Konfiguration im Speicher oder auf der Festplatte) alle Strukturen, die sie von einem anderen Knoten abruft, zwischenspeichert.

Sie könnten ein look at this nehmen, da es erklärt, dass es Vorbehalte für SQL gibt - nämlich, dass es die Verwendung von Mnesia in Ejabberd nicht beseitigen wird. Es scheint, dass ein geteilter mysql-Host eine Option wäre, oder dass die Verwendung einer Master-Slave-Replikationskonfiguration innerhalb der Clustering-Funktionen von mysql wahrscheinlich auch funktionieren würde, da ein gemeinsamer SQL-Server funktioniert.

6

Standardmäßig geht alles nach Mnesia und die meisten Sachen werden repliziert. Sie können auch wählen, ob Mnesien-Tabellen auf Disk oder Speicher gehen. Im Grunde können Sie den Speicherort der mnesia-Tabelle nach Belieben neu konfigurieren, aber normalerweise werden Tabellen im Speicher repliziert, um sie in der Nähe zu halten.

Es stimmt auch, dass das Clustering von Ejabberd über Spanning Nodes über den Mnesia-Cluster erfolgt, also ist es wahrscheinlich keine Mühe wert, das zu beseitigen.

Die meisten Mods (die xeps implementieren) benutzen mnesia, aber sie haben mysql-Äquivalente. Es ist noch breiter - sie haben SQL-Äquivalente, die mit "_odbc" suffigiert sind. Beispiel: mod_roster und mod_roster_odbc.

Zusammenfassend können Sie mit leichtem Mnesia fertig werden, um Konfigurationen und einige In-Memory-Sachen zu handhaben und zentrale mysql für schwere Sachen zu verwenden. Der Speicherort von mysql ist konfigurierbar in ejabberd config.

+0

Ich ziele darauf ab, die einfachste Einrichtung zu erstellen, die leicht zu jeder benötigten Größe (10M * n aktive ..) durch Hinzufügen weiterer Knoten wachsen kann. 3 Dinge kommen mir in den Sinn. (A). Mit der Limitierung der Tabellengröße auf Minesia Local Content Tables anstatt der Replikation klingt auf den ersten Blick mit einer Mnusia-Only-Konfiguration besser. (B). Wenn man MySQL nichts anvertraut und sich feierlich auf ein Mnesien-Setup verlässt, wäre das am einfachsten. (C). Wird für eine sehr große Bereitstellung eine zentralisierte MySQL-DB benötigt oder kann sie mnesien schneiden? –

+1

Die Mehrheit der eJabberd-Bereitstellungen, die ich traf, hat gemischte Setups und sie verwenden zentralisiertes mysql (es ist leicht zu replizieren, leicht zugänglich für andere Schichten des Systems). Was meinst du mit mnesia Tischgrößenbeschränkung? In Speichertabellen gibt es keine Begrenzung und in den meisten Fällen benötigen Sie aus Gründen der Leistung den Speicherort. – user425720