Skalierbare Netzwerkserver mit libowfat und opentracker
Zusammenfassung
Felix von Leitner meldete 2007 stolz, dass The Pirate Bay auf opentracker umstieg, einen BitTorrent-Tracker, den Dirk Engling alias erdgeist auf Basis der Bibliothek libowfat geschrieben hatte. libowfat stammt von von Leitner selbst und enthält eine Abstraktion für skalierbare Netzwerkserver. Bei The Pirate Bay bewältigte opentracker auf vier Trackern rund 17.000 Anfragen pro Sekunde, verteilt auf sieben Rechner.
Was ein Tracker macht
Bei BitTorrent laden Nutzer Dateien direkt voneinander. Der Tracker ist die Vermittlungsstelle: Er merkt sich, welche Rechner welche Datei anbieten, und teilt das neuen Teilnehmern mit. Jede Anfrage ist klein, aber ein großer öffentlicher Tracker bekommt sie in enormer Zahl. Damit ist ein Tracker ein idealer Prüfstein für die Frage, wie viele gleichzeitige Verbindungen ein Server effizient bedienen kann.
libowfat kapselt die unterschiedlichen Mechanismen der Betriebssysteme für viele gleichzeitige Verbindungen, etwa epoll unter Linux und kqueue unter BSD, hinter einer gemeinsamen Schnittstelle. Deshalb lief opentracker sowohl auf dem BSD-Tracker der Entwickler als auch unter Linux bei The Pirate Bay. Dieselbe Bibliothek nutzt von Leitner auch im Webserver gatling.
Was daraus wurde
Der Umstieg zeigte, dass sorgfältig geschriebener C-Code mit wenig Hardware sehr hohe Last bewältigen kann. Die Lastverteilung erledigte schlichtes DNS-Round-Robin. The Pirate Bay schaltete seine Tracker Ende 2009 ab und setzte danach auf Magnet-Links und die verteilte Hashtabelle DHT, die ganz ohne zentrale Tracker auskommt. opentracker blieb für andere Tracker im Einsatz.
Ideen
- Eine Abstraktionsschicht verbirgt die Unterschiede zwischen epoll, kqueue und anderen Mechanismen.
- Ein Tracker vermittelt nur, die eigentlichen Daten fließen direkt zwischen den Nutzern.
- DNS-Round-Robin verteilt Last ohne zusätzliche Hardware.
Einsichten
- Echte Großlast ist der beste Beweis für die Skalierbarkeit einer Bibliothek.
- Gute Abstraktionen machen Software zwischen Betriebssystemen portabel, ohne Leistung zu verschenken.
Fakten
- Bei The Pirate Bay liefen 17.000 Anfragen pro Sekunde über vier Tracker auf sieben Rechnern.
- The Pirate Bay schaltete seine Tracker Ende 2009 zugunsten von DHT und Magnet-Links ab.
Referenzen
Bemerkungen
- The Pirate Bay war wegen Urheberrechtsverletzungen umstritten; technisch ist der Fall dennoch ein gutes Beispiel für skalierbare Netzwerksoftware.
Empfehlungen
- Nutze für Server mit vielen Verbindungen ereignisgesteuerte Schnittstellen wie epoll oder kqueue, oder eine Bibliothek, die sie kapselt.
- Teste Skalierbarkeit unter realistischer Last, Benchmarks allein reichen nicht.
Links zur Originalquelle und zum Webarchiv öffnen einen neuen Tab.