MyBlog

Mein Projekt, der streamLB
Von DenniX am 10.06.2011, 22:19.
2 Kommentare | Visits: 587
streamLB streamLB - kann man das essen...?

Nein, aber so ähnlich - fast. Eigentlich möchte ich etwas über mein Projekt erzählen, mit dem ich in den letzten Monaten beschäftigt war. Leser, die kein technisches Verständnis haben, und sich dafür nicht interessieren, können ruhig hier klicken und sich mit etwas anderem beschäftigen - es wird nämlich jetzt etwas "nerdig" :-D
streamLB steht für "Stream Loadbalancer" und für alle die ein bisschen Englisch können, merken vielleicht schon was das Ding macht bzw. machen soll. Für alle anderen: "er" verteilt Zuhörer auf weitere Server.

Größere Internetradios betreiben oft mehrere Streaming-Server, so dass es nicht mehr so einfach ist, dem Zuhörer eine Adresse zur Verfügung zu stellen um auf die Streams zu gelangen. Abhilfe schafft da meist eine zentrale Stelle, die dann die Anfragen verarbeitet und weiterleitet.

PHP-Skripte?

Im Internet kusieren seit Jahren PHP-Skripte für solche Aufgaben.
Auch RauteMusik setzte bis Ende 2010 auf einen PHP-MySQL basierenden Verteiler mit Apache 2.
Der Nachteil war nur, dass dieses PHP-Skript bei einigen hunderten gleichzeitiger Anfragen zu viel Resourcen verbraucht hat.
Und dabei musste dieses Skript nicht viel machen. Daher habe ich im Dezember 2010 damit angefangen diesen Loadbalancer neu zu entwickeln - diesmal ohne Apache und ohne PHP. Wie? Indem man die Sprache "C" nimmt :-) Weiteres dazu unten.

Der Ablauf eines Stream-Loadbalancers

Im Prinzip ist der Ablauf ganz einfach zu verstehen. Es gibt den Client, der einen HTTP-Request an den Server sendet, zum Beispiel: "Gib' mir http://listen.meinradio.de".
Der Loadbalancer prüft welche Server für diese Adresse verfügbar sind und schaut, welcher davon am wenigsten ausgelastet ist. Als nächstes sendet der Loadbalancer ein: "Hier Client, nutz' bitte folgende Adresse: http://server1.meinradio.de"
Daraufhin kontaktiert der Client den anderen Server und kann sich mit dem eigentlichen Stream verbinden.

Was habe ich für Vorteile von einer zentralen Einschaltstelle?

Ein Vorteil ist beispielsweise, dass man dem Zuhörer immer eine URL geben kann, die immer gültig ist. Auch wenn die Streamserver dahinter jeden Tag umziehen würden. Weitere Vorteile sind z.B. statistische Werte, d.h.: Wann hat er sich verbunden? Mit welchem Player? Wohin wurde er geleitet? Mit welcher Adresse hat er eingeschaltet, falls es mehrere gibt?

Was ist an deinem Loadbalancer jetzt anders?

Während PHP eine Interpretersprache ist und mit jedem Aufruf neu interpretiert werden muss, was viel Systemlast zieht, ist mein Loadbalancer in C geschrieben und liegt somit schon kompiliert vor. Somit können Anfragen viel schneller bearbeitet werden.

Ein Benchmark hat ergeben, dass mein streamLB pro Request durchschnittlich 389.3ms benötigt. Zusätzlich hat der Benchmark ergeben, dass der Verteiler bis zu 642 Requests pro Sekunde verarbeiten kann.

Resourcenverbrauch

Eine kurze Übersicht aus der Praxis von RauteMusik.FM:
Der streamLB läuft seit genau 5 Tagen und 5 Stunden, hat in dieser Zeit ca. 4.000.000 Verbindungen gehabt (davon wurden ca. 3.000.000 Anfragen auch auf Streams weitergeleitet) und hat aktuell einen RAM Verbrauch von ca. 25 MB.

Zum Schluss: Kann ich den auch haben für mein Radio?

Prinzipiell ja, allerdings nicht in dem Funktionsumfang wie die Version, die bei RauteMusik eingesetzt wird - und auch nicht kostenlos :-)
Solltet ihr Interesse haben, würde ich mich freuen, wenn ihr mich kontaktiert - hier gehts zum Formular.

Ich glaube, dass waren jetzt auch genug Informationen darüber, bevor ich euch verschrecke.


Du magst diesen Blogeintrag?


Du möchtest etwas zu diesem Blogeintrag schreiben? Dann los :-)

Dein Name:
Dein Kommentar:



Von Clemens am 10.06.2011 23:50.
Cooles ding!!! Top!
Von Robin am 08.07.2011 21:55.
Deutlich effektiver und einfacher gehts übrigens über IP-VS/LVS, das ist der Loadbalancer der in den Linux-Kernel eingebaut ist.. Ist aber natürlich wenn man spezielle DB-Sachen/Statistiken will nicht so genau eingepasst..
Home





Social Networks

 

Kontakt   |   Impressum   |   Sitemap   |  © 2009-2012 by www.DenniX.eu  |   Design © by JKDesigns   |   hosted by Host Europe