von Vladislav Shpilevoy
Bei: FOSDEM 2020
SWIM - ist ein relativ neues Protokoll zur Entdeckung und Überwachung von Clusterknoten, zur Verbreitung von Ereignissen und Daten zwischen ihnen. Das Protokoll ist extrem leichtgewichtig, dezentralisiert, und seine Geschwindigkeit sowie die Last pro Knoten hängen nicht von der Clustergröße ab.
Das Protokoll löst mehrere Aufgaben gleichzeitig. Erstens - den Aufbau und die Aktualisierung der Topologie eines Clusters ohne explizite Konfiguration. Die Aufgabe ist ziemlich kompliziert, weil:
❮ul❯
❮li❯neue, gerade gestartete Knoten wissen nichts über andere, und sie müssen sie irgendwie entdecken;❮/li❯
❮li❯bereits arbeitende Knoten können ausfallen, und das sollte erkannt werden, um einen Master zu wechseln, oder einen nicht wiederherstellbaren Knoten aus dem Cluster zu entfernen, oder ihn neu zu starten.❮/li❯
❮/ul❯
Laut dem Protokoll senden Clusterknoten Pakete und P2P-Ping-Anfragen. Broadcast hilft, neue Knoten zu entdecken, P2P-Pings helfen, den Ausfall eines bekannten Knotens zu erkennen.
Eine zweite Aufgabe - die Verbreitung von Ereignissen in einem Cluster. Ein Ereignis ist ein Knotenfehler; UUID-Änderung; IP-Adressaktualisierung; das Erscheinen eines neuen Knotens - alles, was den Zustand des Clusters beeinflusst. Manchmal definieren Benutzer ihre eigenen Ereignistypen. Wenn ein Knoten von einem Ereignis erfährt, muss er das Ereignis an andere Knoten verbreiten. Das SWIM-Protokoll beschreibt einen Algorithmus, wie man Ereignisse erkennt und verbreitet, und gibt folgende Garantien:
❮ul❯
❮li❯es dauert eine konstante Zeit, um von einem Ereignis auf mindestens einem Knoten im Cluster zu erfahren;❮/li❯
❮li❯es dauert logarithmisch zur Clustergröße Zeit, um dieses Ereignis an jeden Knoten des Clusters zu verbreiten.❮/li❯
❮/ul❯
In dem Vortrag erkläre ich, wie SWIM funktioniert, wie und mit welchen wesentlichen Verbesserungen es implementiert wurde, wie man SWIM verwendet und welche praktischen Leistungsresultate erzielt wurden.
Die Implementierung ist Teil des Tarantool DBMS. Tarantool ist das größte russische Open-Source-DBMS. Tarantool strebt derzeit eine bessere Skalierbarkeit, Verbesserungen im horizontalen Scaling, in clusterweiten Berechnungen und ein besseres Cluster-Management an. Im Rahmen dieses Fahrplans wurde kürzlich die Implementierung des SWIM-Protokolls veröffentlicht.
Raum: K.1.105 (La Fontaine)
Geplanter Beginn: 2020-02-02 11:00:00