2014-02-16 9 views
6

Ich studiere Zoowärter, also lese ich das Papier "Ein einfaches total geordnetes Rundfunkprotokoll". Und ich verstehe den folgenden Satz nicht wirklich:verwirrt über Transaktionsprotokolle in zoekeeper

"ZooKeeper verwendet eine In-Memory-Datenbank und speichert Transaktionsprotokolle und periodische Snapshots auf der Festplatte. Zab Transaktionsprotokoll verdoppelt sich als Datenbank Write-Ahead-Transaktionsprotokoll, so dass eine Transaktion wird Einmal auf die Diskette geschrieben. "

Gibt es jemanden, der es mir erklären kann?

Antwort

8

Der Zookeeper muss Transaktionen auf die Festplatte schreiben, andernfalls würde er beim erneuten Starten des zoekeeper irgendwelche Abänderungen vergessen, die er gehört hat. Die Art und Weise, wie zookeeper auf die Festplatte schreibt, ist die, bevor zoekeeper auf eine Transaktion reagiert und die Transaktion an eine Transaktionsprotokolldatei anhängt. Wenn die Transaktionsprotokolldatei eine bestimmte Größe erreicht, wird eine neue Transaktionsprotokolldatei erstellt.

Das Schreiben in Transaktionsprotokolldateien ist an sich nicht effizient, da zookeeper beim Start jede Transaktion wiederholen müsste, die es jemals verarbeitet hat. So wird Zoowäscher regelmäßig einen Schnappschuss des aktuellen Zustands seiner in Speicher befindlichen Datenbank in Datei schreiben. Beim Start muss der Tierpfleger nur den Schnappschuss und alle Transaktionsprotokolle laden, seit der Schnappschuss erstellt wurde.

+1

Wenn zookeeper die Transaktion in eine Transaktionsprotokolldatei anhängt, bevor sie auf eine Transaktion reagiert, ist das nicht langsam? Da das Schreiben auf die Festplatte einige Zeit dauern kann. – Snail

+2

Die beste Vorgehensweise besteht darin, dem Transaktionslog eine Platte zu widmen und diese immer an die Transitionsdatei anzuhängen. Auf diese Weise ist der Plattenkopf fast immer an der richtigen Stelle positioniert, und die Schreibvorgänge sind ziemlich schnell. Zookeeper kann Tausende von Transaktionen pro Sekunde durchführen. – sbridges