Peer-To-Peer-Computing (p2p)

Peer-To-Peer (computing) ist ursprünglich definiert als das Teilen von Ressourcen, wie Festplatten, Drucker u.ä. Wörtlich gesehen ist es das Vernetzen von mehreren gleichberechtigten PCs. Meist werden diese Freigaben über diverse Systeme zur Rechteverwaltung kontrolliert. Hierzu bekommt jeder seine Anmeldeinformmationen, ob nun beim Einloggen in den PC selbst oder bei diversen Diensten im Internet.
Genutzt wird dieses neben den alltäglichen Bereichen wie der Freigabe von Diensten im eigenen Netzwerk oder im LAN/WAN seit einiger Zeit auch verstärkt im Internet. Vielen Internet-Nutzern und Freunden der mp3-Musik dürfte Napster ein Begriff sein. Dieser erste große Musiktauschdienst stellte Server zur Verfügung, welche freigegebene Dateien der Mitglieder wiederum anderen zum Download anboten. Im Verlauf der folgenden Monate kamen dann auch "echte" Peer-To-Peer Netzwerke auf den Markt wie Gnutella und seine vielen Nachfolger. Diese Vertreter der File-Sharing-Netze arbeiten komplett ohne zentrale Steuerung, also ohne Server und haben somit lauter gleichberechtigte Rechner in ihrem Verbund, die durch gut ausgeklügelte Techniken miteinander kommunizieren. Die modernsten Vertreter verwenden hierbei jedoch Rechner mit schnellem Internetzugang als Steuerungsrechner - was die Gleichberechtigung wieder etwas zurückfährt aber auf Grund der enormen Anfragen und Ergebnisse nötig ist. Solche Netzwerke symbolisieren die gemeinsame Arbeit mit einem bestimmten Ziel und fassen Ressourcen zusammen, die ein Computer allein wohl kaum zur Verfügung stellen könnte.
Ebenso verhält es sich beim Verteilten Rechnen. Unter verteiltem Rechnen versteht man die stückchenweise Bearbeitung eines Problems auf mehreren Rechnern. Hierzu fordern die wiederrum gleichberechtigten PCs (daher Peer-To-Peer-Computing) Datenpakete von einem Server an und schicken die mit einer speziellen Software durchgerechneten Ergebnisse wieder zurück, um neue Aufgaben zu erhalten. Die hierzu benötigte Software (auch als Client bezeichnet) nutzt i.A. den IDLE-Prozeß des Rechners und stellt somit diese Ressourcen dem Gesamtnetz zur Verfügung. Die Clients gibt es je nach Projekt für unterschiedliche Rechnerarchitekturen und Betriebssysteme. Dadurch wird z.B. beim Seti@Home-Projekt nahezu die gesamte Internetgemeinde zumindest theoretisch erreichbar und ca. 4 Mio registrierte User weltweit sprechen da für sich. Natürlich rechnen nicht alle User aktiv mit, aber dies spielt keine Rolle, da die Datenpakete einfach an andere User (weiter-)verteilt werden. Der Ausfall einzelner Rechner spielt beim Verteilten Rechnen nur eine untergeordnete Rolle, Datenpakete, für die keine Ergebnisse zurückkommen werden einfach erneut verschickt. Das Verteilte Rechnen eignet sich nicht bzw. nur mit Abstrichen für Echtzeitberechnenungen. Die Gründe sind der eben erwähnte Ausfall einzelner Rechner und die Tatsache, daß Datenpakete verschickt werden. Diese dürfen natürlich nicht zu klein sein, da sonst schnell ein extremer Netzwerkverkehr entstehen würde. Trotzdem kann man rein von der Rechengeschwindigkeit her je nach Datenmenge und teilnehmenden Cumputern mehr als Echtzeitgeschwindigkeit erhalten - nur zeitlich verschoben. Für die meisten großen Berechnungsprobleme reicht diese Form des Computerverbundes aus und ist auf Grund der meist kostenlos zur Verfügung stehenden Ressourcen um ein vielfaches günstiger als die Anschaffung eines Supercomputers.
Eine andere Möglichkeit, um enorme Rechenleistungen zu erhalten, ist das Clustering. Dieses ist die Grundlage aller Großrechner/Supercomputer. Die kleinste Form bekommt man bei (fast) jedem PC-Händler in Form eines Dual-Prozessorsystems, welches man sich relativ preisgünstig aufbauen (lassen) kann. Größere Systeme verwenden oftmals bedeutend mehr CPUs in einem Rechner und schalten diese dann noch per entsprechender Software über ein Netzwerk zusammen. Windows unterstützt in speziellen Versionen ab 2000 neben Multiprozessorsystemen auch das Clustering, marktführend in diesem Segment sind jedoch die vielen UNIX-Derivate, da diese fast alle schon in der Entstehungsphase hervorragend mit Netzwerkeigenschaften und Mehrprozessorunterstützung ausgestattet wurden. Der Vorteil des Clustering liegt darin, daß man von außen betrachtet einen Rechner mit zwar oft riesigen Ausmaßen aber auch einer enormen Leistung erhält. Genau genommen muß man noch Parallel-Rechner von Clustern unterscheiden. Diese finden sich zunehmend im Bereich der Supercomputer wieder. Hierbei werden die Daten auf eine andere Art und Weise verarbeitet. Schon bei der Programmierung der Software muß darauf geachtet werden, daß einzelne Teilbereiche eigenständig auf je einer CPU laufen können. Der zur Zeit schnellste Großrechner ist der ASCII-White von IBM. Eine 2x jährlich aktuallisierte Liste der 500 schnellsten Rechner der Welt findet man unter http://top500.org. Die Seite wird durch Hintergrundinformationen und News rund um dieses Thema verfeinert.

Noch ein Zitat zum Thema:
"Peer-to-Peer technology is yet another tool for bringing an innovative solution to practical problems." — Pat Gelsinger, Vice President and Chief Technology Officer, Intel Architecture Group.