Facebook
Twitter
Google+
Kommentare
0

Mini-Storage-Grid crowdsourced

Ich habe eine verrückte Idee, und ihr sagt mir ob wir das umsetzen können oder nicht. Dabei bin ich auf eure Mitarbeit angewiesen, denn das verrückte daran ist dass es ein verteiltes System sein soll, wobei jeder seinen Client selbst bauen wird (Crowdsourcing).

Also, wir brauchen Speicherplatz, den gibt es da draußen zuhauf, meist auch kostenlos, bei einem Anbieter, “in der Cloud” oder auch als Peer-to-Peer Grid, ich weiß. Aber es gibt sicher noch kein Speicher-Grid das nur aus unterschiedlichen Nodes besteht. Jeder von euch, der mitmachen möchte, muss sich seinen eigenen Client basteln, theoretisch egal in welcher Programmiersprache. Natürlich müssen die Clients miteinander Daten austauschen, in diesem Fall eure Dateien. Wir brauchen als ein möglichst kleines effizientes Protokoll, mit dem man sich finden und Daten austauschen kann.

Dabei denke ich an folgendes:

  • Erstmal braucht man eine Verbindung zu mindestens einem anderen Node, sodass man beginnen kann ein Netz aufzubauen mit allen anderen Nodes. Am Anfang verbindet man sich also zu 1-2 hardcodierten IP-Adressen und fragt diese Nodes nach weiteren IP-Adressen anderer Nodes. So kann man sich nach und nach das Grid aufbauen bis man alle anderen kennt.
  • Wer seine Dateien (wir können das ja am besten auf maximal 100KB beschränken) in das Grid hochladen möchte zerteilt sie in maximal 50KB große Teile (Chunks), sucht sich minimal 2 verschiedene andere Nodes und lädt diese Teile hoch.
  • Wer möchte kann (und sollte?) die Datei natürlich vorher entsprechend verschlüsseln wenn es private Dateien sind, das ist aber jedem selbst überlassen. Wer etwas Ausfallsicherheit haben möchte lädt diese beiden Chunks bei jeweils 2 oder 3 Nodes hoch, falls mal einer Offline geht.
  • Wer seine Dateien wiederhaben möchte sucht sich die entsprechenden Nodes wieder und lädt die Dateien wieder runter und baut sie wieder zusammen.

Die Frage ist, was brauchen wir noch alles? An was sollten wir alles denken? Eine Versionierung wäre eventuell nicht schlecht, da wir sicherlich das Protokoll mit der Zeit weiterentwickeln werden. Wir könnten uns überlegen ob wir auch IPv6 fähig sein wollen. Wir könnten uns überlegen auch eine Art Quota einzubauen: Nur wer selbst 10MB Speicher zur Verfügung stellt darf seinerseite 10MB hochladen (wie macht man das in einem Netz ohne Master-Node?). Wir könnten natürlich auch viel Intelligenz in das Netz einbauen: Wenn ein Node und damit seine Chunks offline gehen, muss der andere Node, der diese Chunks auch noch hat, dafür sorgen dass es wieder 2 Kopien dieser Chunks im Grid gibt. Oder aber der Node, der offline geht, nutzt seine letzten 10 Sekunden noch dafür dass seine Chunks redundant im Netz vorhanden sind und lädt nochmal schnell ein paar Chunks hoch. Und und und.

Aber erstmal geht es um die Basics, sprich nach dem Start andere Nodes finden und Chunks hoch- und runterladen können.

Könnte ein interessantes Projekt werden, jeder kann in seiner Lieblingssprache (oder in der Sprache die er schon immer mal lernen wollte) mitmachen, was denkt ihr?

flattr this!

Über den Autor

PHP Gangsta

Der zweitgrößte deutsche, eher praxisorientierte PHP-Blog von Michael Kliewe veröffentlicht seit Mitte 2009 Artikel für Fortgeschrittene.

Link erfolgreich vorgeschlagen.

Vielen Dank, dass du einen Link vorgeschlagen hast. Wir werden ihn sobald wie möglich prüfen. Schließen