Tierpfleger/Mollig -vs - MySql-NDB
Habe ich gelesen, das Paxos Papier, das FLP-theorem, etc. vor kurzem und Evaluierung von Apache Zookeeper für ein Projekt. Ich habe auch schon thru Mollige (Google verteilten locking-service) und in der verschiedenen Literatur über ihn, das auch online verfügbar ist. Meine grundsätzliche Anwendungsfall für die Tierpfleger ist die Implementierung von Replikation und die Allgemeine Koordination, die für ein verteiltes system.
Ich Frage mich aber, was ist der spezifische Vorteil, dass die Tierpfleger oder eine Mollige wie verteilten locking-system bringt auf den Tisch. Im Grunde bin ich nur Fragen, warum kann ich nicht einfach eine MySQL-NDB-Cluster. Ich höre immer wieder, dass MySQL eine Menge von Replikationsproblemen. Ich hatte gehofft, einige mit mehr Erfahrung über das Thema könnte etwas Licht auf, es.
Vielen Dank im Voraus..
Eine simple Auflistung meiner Anforderungen :
- Ich habe eine homogen verteilte system.
- Ich brauche etwas Hilfe von gleichbleibender Zustand über alle meine Knoten.
- Mein system macht einen service, und die Interaktion mit Kunden führt zu einigen Veränderungen in den kollektiven Zustand von meinem system.
- Hohe Verfügbarkeit ist ein Ziel, also ein Knoten runter gehen, muss nicht auf den Dienst auswirken.
- Ich erwarte, dass das system service atleast ein paar 1000 req/sec.
- Ich erwarte, dass der kollektive Zustand des Systems zu werden, begrenzt in der Größe (im Grunde fügt/löscht wird vorübergehend sein... aber im steady-state, ich erwarte viel von updates und liest)
- Diese Frage ist schwer zu beantworten, ohne zu wissen, mehr über das, was Sie versuchen zu erreichen. Es ist durchaus möglich, dass einfache MySQL Replikation (auch nicht mit NDB) ausreichend sein könnte für Sie. In den meisten Datenbank-Architekturen, die wichtigsten Fragen, die zu beantworten sind: 1) was ist meine Recovery Time Objective (ie. wie lange muss ich mich erholen von der primären Datenbank stürzt ab) 2) was ist meine Recovery Point Objective (ie. wie viele Daten kann ich zu verlieren, stehen im Falle der Primären Datenbank abstürzt), je enger deine Toleranzen für diese Ziele, die mehr aufwendige (und teure) Lösung.
- Danke martin... ich habe gerade aktualisiert meine Frage mit meinen Anforderungen..
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hängt es von der Art der Daten, die Sie verwalten, und die Skalierung und Fehlertoleranz, die Sie für gehen.
Kann ich die Antwort vom Tierpfleger Sicht. Vor Beginn sollte ich erwähnen, dass Tierpfleger nicht ein Mollig-Klon. Genauer gesagt, es ist nicht direkt sperren. Es ist auch entworfen, mit verschiedenen Bestell-und performance-Anforderungen im Auge behalten.
In Tierpfleger die komplette Kopie des system state, liegt im Speicher. Änderungen repliziert werden, mithilfe von atomic-broadcast-Protokoll und synchronisiert auf der Festplatte (mit Hilfe eines change journal) mit einer Mehrheit von ZooKeeper-Servern, bevor Sie verarbeitet wird. Aufgrund dieser Tierpfleger hat die deterministische Leistung, die Ausfälle tolerieren kann, solange eine Mehrheit der Server sind. Sogar mit einem großen Ausfall, wie ein Stromausfall, solange eine Mehrheit der Server wieder on line, system state wird beibehalten. Die gespeicherten Informationen Tierpfleger wird in der Regel als Boden der Wahrheit des Systems, so wie die Konsistenz und Haltbarkeit gewährleistet sind, sehr wichtig.
Andere Dinge, die Tierpfleger gibt, die Sie haben zu tun mit der überwachung der dynamischen Koordination Staates. Ephemeral nodes erlauben Sie tun, um einfache Fehlererkennung und Gruppen-Mitgliedschaft. Die Bestellung garantiert können Sie tun, leader-election-und client-Seite sperren. Schließlich, Uhren ermöglichen Ihnen die überwachung des Systemstatus und reagieren Sie schnell auf änderungen im system Staat.
Also, wenn Sie brauchen, um zu verwalten und zu reagieren, um die dynamische Konfiguration, erkennen von Fehlern, Wahl Führer, etc. Tierpfleger ist, was Sie suchen. Wenn Sie brauchen, um große Datenmengen speichern, oder Sie benötigen ein relationales Modell für diese Daten, MySQL ist eine viel bessere option.
MySQL mit Innodb bietet ein gutes Allzweck-Lösung, und wird wahrscheinlich halten Sie sich mit Ihren performance-Anforderungen ganz einfach auf eine nicht allzu teure hardware. Es kann problemlos mit vielen tausenden von Aktualisierungen pro Sekunde auf einem dual-quad-core-box mit anständigen Scheiben. Die integrierte asynchrone Replikation bekommen Sie die meisten der Weg dorthin für Ihre Anforderungen an die Verfügbarkeit - aber verlieren Sie möglicherweise ein paar Sekunden' im Wert von Daten, wenn der primäre ausfällt. Einige der verlorenen Daten können wiederhergestellt werden, wenn die primäre repariert ist, oder möglicherweise wiederhergestellt werden, von Ihrer Anwendung protokolliert: egal, ob Sie tolerieren können, das ist abhängig davon, wie Ihr system funktioniert. Eine weniger verlustreich - aber langsamere - alternative ist die Verwendung von MySQL mit Innodb shared-disk zwischen Primären und Failover-Einheiten: in diesem Fall, ist die Failover-Einheit wird über die Festplatte, wenn der Primäre ausfällt ohne Datenverlust-solange die Primären nicht eine Art von disk-Katastrophe. Wenn Sie den freigegebenen Datenträger ist nicht verfügbar, DRBD verwendet werden können, um dies zu simulieren, indem Sie synchron zu kopieren disk-Blöcke, um die Failover-Einheit, wie Sie geschrieben sind: dies könnte einen Einfluss auf die Leistung.
Verwendung von Innodb und einer der Replikation der oben genannten Lösungen erhalten Sie Ihre Daten kopiert haben, um die Failover-Einheit, die einen großen Teil der recovery-problem gelöst, aber extra Kleber erforderlich ist, um Ihr system neu konfigurieren zu bringen, ist die Failover-Einheit on-line. Dies erfolgt in der Regel mit einem cluster-system wie RHCS oder Herzschrittmacher oder Herzschlag (unter Linux) oder MS-Cluster-Kram für Windows. Diese Systeme sind toolkits, und Sie sind Links, um zu bekommen, Ihre Hände schmutzig baut Sie in eine Lösung, die Ihre Umgebung anpassen. Doch für alle diese Systeme gibt es eine kurze Ausfallzeit-Zeitraum, während das system feststellt, dass die Primäre ausgefallen ist, und konfiguriert das system zu verwenden, die Failover-Einheit. Dies kann mehrere zehn Sekunden: versucht zu reduzieren, dies kann Ihre Fehler-detection-system zu empfindlich, und vielleicht finden Sie Ihr system als Failover unnötig.
Verschieben, MySQL NDB dient der Reduzierung der Zeit bis zur Wiederherstellung, und zu einem gewissen Grad helfen, scale-up Ihrer Datenbank zur Verbesserung der Leistung. Jedoch, MySQL NDB hat einen Recht engen Anwendungsbereich. Das system bildet eine relationale Datenbank, die auf einer verteilten hash-Tabelle, und so für komplexe Abfragen mit mehreren joins über Tabellen, es ist schon ein bisschen traffic zwischen MySQL-Komponente und die storage-Komponenten (die NDB-Knoten), um komplexe Abfragen zu langsam laufen. Bei Abfragen, die gut laufen in der Tat sehr schnell. Ich habe dieses Produkt ein paar mal, aber meine vorhandenen Datenbanken wurden zu kompliziert ist, passen gut und würde eine Menge redesign bekommen gute Leistung. Wenn Sie jedoch bei der Planung einer neuen Anlage, NDB gut funktionieren würde, wenn Sie tragen können, Ihre Zwänge Sie daran, wie Sie gehen. Darüber hinaus werden Sie möglicherweise feststellen, dass Sie durchaus ein paar Maschinen, um eine gute NDB Lösung: ein paar MySQL-Knoten plus 3 oder mehr NDB-Knoten - obwohl sich die MySQL-und NDB-Knoten können co-existieren, wenn Sie Ihre performance-Anforderungen sind nicht zu extrem.
Sogar MySQL-NDB nicht verkraften insgesamt Website-Verlust - Feuer im Rechenzentrum, admin, Fehler, etc. In diesem Fall müssen Sie in der Regel eine weitere Replikation Baches, der an einem DR-Standort. Diese werden in der Regel asynchron erfolgen, so dass connectivity-Einwürfe auf der inter-Website verlinken, nicht stall, Ihre gesamte Datenbank. Dies ist mit NDB ' s Geografische Replikation aktivieren (in der bezahlt-für telco-version), aber ich denke, dass MySQL 5.1 und höher können diese nativ.
Leider weiß ich wenig über Tierpfleger und Mollig. Hoffentlich jemand anderes abholen können diese Aspekte.