DistributedSharedMemory

aus Nomads, der freien Wissensdatenbank

Diplomarbeitsthema, bearbeitet von Christian Keller

Inhaltsverzeichnis

Zur Diplomarbeit

Abstract

Das in dieser Arbeit vorgestellte verteilte Peer-to-Peer-Speichersystem für Ubiquitous-Computing – Daedalus – ermöglicht das Verändern von gespeicherten Datenobjekten. Dabei wird die Konsistenz der Daten gesichert, in dem ein stochastisches Locking-Verfahren verwendet wird, welches den speziellen Bedingungen von Peer-to-Peer-Netzen und Ubiquitous-Computing Rechnung trägt.

Daedalus verteilt die Last auf die teilnehmenden Knoten nicht gleichmäßig sondern sozial. Das heißt, je leistungsfähiger ein Knoten ist, desto mehr Aufgaben übernimmt er. Besonders leistungsschwache Knoten können so vollkommen passiv von Daedalus profitieren.

Trotz stochastischem Locking nimmt die Last eines leistungsstarken Knotens nur linear zu. Anders als in vielen vergleichbaren Systemen, jedoch nicht mit der Gesamtzahl aller partizipierenden Knoten sondern nur mit der Zahl der Knoten, die sich für ein bestimmtes Datenobjekt interessieren. Dadurch wird die Last eines Knotens nur in seltenen Fällen sehr groß werden.

Der Daten- und Zeitoverhead der für die Verwaltung nötig ist, macht ein Dataclustering für die Proof-of-Concept-Implementation in das WLAN-Ortungssystem MagicMap sinnvoll. Statt jede Information als eigenständigen Wert in Daedalus zu speichern, bietet es sich an ähnliche Informationen zu einem Datenobjekt zusammenzufassen wobei die Schreibzugriffe auf ein Datenobjekt minimiert werden.

Downloads

  • Ausschreibung(MS Word, 50kB) des Diplomthemas von Peter Ibach, Juni 2005
  • Abgabe (PDF, 2MB) der Diplomadrbeit von Christian Keller, vom März 2006.
  • Endgültige Fassung (PDF, 2MB) vom 9. Mai 2006
  • Sourcen (ZIP, 13kByte) des Daedalus Clienten für MagicMap (Zu verwenden mit dem Daedalus-Branch von MagicMap)

Verwandte Projekte

  • [1] JuxMem - ein verteiltes Speichersystem für Grid-Computing auf P2P-Basis
  • [2] OceanStore - ein verteiltes Archivierungssystem
  • Ivy - ein P2P-Dateisystem
  • jxtaspaces - dort implementieren sie auch ein Shared-Memory-System mittels JXTA, wobei ich aus der Readme schließe, dass sie wesentliche Teile noch nicht implementiert haben ("the space is not distributed, not persistent, and not fault-tolerant"
  • buzzeebee - Tool zum Auffinden von Personen mit ähnlichen Interessen in der Umgebung. Erstellt Multihop-Netzwerk über WLAN und Bluetooth.


Verwandte Projekte am Lehrstuhl ROK/Institut

  • EMES-Projektarbeit Autorennspiel von Achim Klein, Michael Menz, Tobias Meyer zu Hoberge und Christine Schnaithmann - Hinweise zur Implementierung mit JXTA
  • NOMADS_Seminararbeit von Achim Klein und Timo Kucza - "Entwicklungstendenzen von Online Multiplayer-Spielen und ihre Unterstützung durch eine universelle Kommunikationsplattform"
  • Diplomarbeit von Tobias und Martin (irgendwas mit P2P Datenbanken...)

Verwandte Themen in diesem Wiki

Konzepte

P2P Discovery

Bei JXTA gibt es drei verschiedene Arten von Peers in einem Peer-to-Peer-Netzwerk, die sich in den Aufgaben zum Discovery unterscheiden. Simple Peers leiten keine Nachrichten weiter und speichern nur die Informationen, die für diesen Knoten relevant sind. Rendevous Peers speichern speichern Discoveryinformationen von andern Knoten. Router Peers ermöglichen die Kommunikation mit Peers die hinter Firewalls und NAT-Routern sind. Das JXTA-Protokoll läßt die genaue Vorgehensweise für ein Discovery weitgehend offen. Mögliche Methoden sind lokale Broadcasts, Einladungen von anderen Peers, das Auswerten von Nachrichten und die Verwendung von Rendevous Peers.
In Gnutella-Netzwerken übernimmt jeder Knoten die gleichen Aufgaben, dh. jeder Knoten muss Pakete weiterleiten können. Der Discoverymechanismus besteht aus einem Broadcast-Protokoll, ein Knoten kennt alle andern Knoten die auf die Broadcastnachricht antworteten und jene, die sich selbstständig zu diesem Knoten verbunden haben.
Quelle

pibach: siehe auch GridServices

Dynamische Gruppenbildung

  • Benutzer:Pibach: hier besteht bei uns auch Wissensbedarf. Problem ist ja, dass vorher gar nicht bekannt ist wer einen interessiert. Es muss also Footprint (Objektbeschreibungen) geben, nach denen man suchen kann. Um Gruppen bilden zu können müssen die vrstl. kontrolliertes Vokabular enthalten, also ontologiebasiert (das ist diskutierbar). Dann gibt es kontinuierliche Kriterien, beispielsweise die Position. Wie kann man das modellieren? Wie kann man das effizient suchen und gruppieren? Was gibt es dazu für Ansätze?
  • Gruppen in JXTA sind hierarchisch aufgebaut, eine Gruppe "JvN Gebäude" kann also die Gruppe "ROK" beinhalten. Gruppen werden anhand eines Namens, der aber nicht eindeutig sein muss, identifiziert. Das Suchen nach Gruppen erfolgt dann mit dem Namen, oder einem Teil des Namens der Gruppe. Prinzipiell kann jeder Knoten Mitglied in jeder Gruppe sein, wenn diese Gruppe nicht explizit eine Authentifizierung verlangt, über die der Knoten nicht verfügt.
  • Benutzer:Pibach: hm. Schon mal nicht schlecht. Aber man kann keine "Footprints" an Objekte anheften und danach suchen? Kann man nach kontinuierlichen Eigenschaften (z.B. Position) suchen? Kann man Zuggriffstrechte auch an Objekten (statt an Gruppen) festmachen? Wie kann man solche Szenarien lösen: Ich laufe rum, will wissen wer noch so an Bekannten in der Nähe ist. Jetzt bauche ich erstmal eine Karte um mich zurechtzufinden. Da gibt es - nehmen wir mal an - bereits eine gewisse Auswahl. Die kann man nach Geokoordinaten finden, oder nach relativen räumlichen Bezügen oder vielleicht auch nach semantischen Bezügen, z.B, räumliche Präpositionen (z.B. Erdgeschoss JvN-Haus). Dann will ich alle Freunde von mir in der Karte sehen. Ein teil meiner Freunde kennt sich aber nicht und möchte ggf. nicht das gesehen werden an alle freigeben. Und es haben vielleicht nicht alle die gleiche Karte (und damit die gleiche Gruppe?) gewählt. Anderes Szenario: ich will Kitesurfen, bin aber noch zu Hause, will ertsmal WebCams finden um zu sehen wie die Lage ist und zusätzlich, welche Leute da rumlaufen, die ich über skype antelefonieren kann und die im Profil auch "Kitesurfen" als Beschreibung des Hobbys haben...
  • Objekte im Sinne von Peers haben nur ihre ID als Eigenschaft. Zusätzlich kann man Gruppenzugehörigkeiten als Eigenschaft ansehen, wobei es hier nicht möglich ist rauszufinden, in welchen Gruppen ein Peer ist, ohne alle möglichen Gruppen zu durchsuchen. Zugriffsrechte für Peers gibt es nicht, da die Peers aber Dienste bereitstellen, werden hier etwalige Zugriffsrechte definiert. Genau wie Rechner im Internet keine Zugriffrechte haben, sondern nur Service die Anfragen je nach Berechtigung ausführen oder verwerfen. Wobei nach diesen Services auch gesucht werden kann.
  • Zu den Szenarien: dies muss im Wesentlichen alles auf höhreren Ebenen stattfinden. Möglich wäre beim zweiten Problem beispielsweise eine Gruppen namens "Kitesurfing" in dieser Gruppe befinden sich Peers die den Service "Webcam" anbieten. Nun kann man danach explizit suchen. Darüberinaus wäre ein Service denkbar, der die Profile von den Peer-Nutzern zur Verfügung stellt. In dem Fall müsste erst nach allen Peers in dieser Gruppe gesucht werden, die den Service anbieten und dann müsste eine Verbindung zu jeden einzelnen aufgebaut werden, um diese Informationen zu erfragen. Das Kartenszenario verläuft analog, ich kenne die Peer IDs meiner Freunde und verbinde mich direkt mit ihnen um den entsprechenden Service zu fragen, wo sie sich aufhalten. Eine Abfrage etwa nach allen Peers die sich im Umkreis von 1km befinden ist so kaum machbar. Eine Lösung dafür wäre eine sinnvolle Verwendung der hirarchischen Gruppen, so dass ich mit einer Suche in der Gruppe Europa->Deutschland->Berlin->Adlershof->HU-Campus erfolg haben kann.

Embedded Web Services

P2P Kommunikation auf Basis von .Net Compact Framework

  • ...

JXTA für DSM

  • Die Peer-Gruppen von JXTA sind nur beschränkt von Nutzen, da sie keine weitern Eigenschaften haben, nach denen Gesucht werden kann. Bzw, eine erhebliche Menge an Gruppen von nöten ist, wenn für jede Resource eine Gruppe erzeugt wird. Da die Suche von JXTA nach Gruppen aber funktioniert, sollte ein DSM-System darauf aufsetzen, um den Entwicklungsaufwand in Grenzen zu halten. Gleichzeitig kommt man aber nicht umhin, eine eigene Suchfunktionalität zu implementieren, wenn Resourcen nach Eigenschaften, etwa ihrer Position, gesucht werden müssen oder sollen.
  • Es muss noch untersucht werden, in wie fern der Overhead der entsteht, wenn jeder einzenel Resource eine Gruppe zu gewiesen wird, vertretbar ist. Dh, alle Peers die eine bestimmte Ressource im Cache haben, müssen Mitglied in der dazugehörigen Gruppe sein. Im Beispiel von MagicMap, bei dem jede Position von drei Geräten aus gemessen wird, sind es bereits drei Resourcen pro Knoten im Netz.
  • Stellt sich der Overhead als zu groß herraus, so macht es Sinn zumindest für Ressorcenpakete Gruppen zu erstellen. Ressourcenpakete sind hierbei eine Art Verzeichnise, die auf verschiedene Resourcen zeigen. So mag es ein Paket geben, das alle drei Positionsangaben zu einem Peer beinhaltet. Ein Peer der sich für diese Information interessiert muss nun nicht mehr erst raussuchen, welche Ressourcen das sind, sondern kann gleich, und unabhängig davon, wer die Position bestimmt, auf die Ressourcen zugreifen. Dadurch wird das Netzwerk entlasstet, da viele Suchanfragen entfallen.

Links

P2P Frameworks

  • JXTA - "JXTA? technology is a set of open protocols that allow any connected device on the network ranging from cell phones and wireless PDAs to PCs and servers to communicate and collaborate in a P2P manner"
  • Zwei Jxta Tutorials des Java Magazins Teil 1 und Teil 2
  • Peeranha42 Ein Framework der Universität Bremen, das auf JXTA aufbaut.
  • Universal Peer-to-Peer "is a framework for sharing data over existing peer-to-peer networks, that provides a rich layering of meta-data and user-extensibility on top of the traditionally closed peer systems."
  • Chord The Chord project aims to build scalable, robust distributed systems using peer-to-peer ideas.
  • DeEveolve - von der Uni Bonn, P2P-System mit Fehlertoleranz

Webservices mit JXTA

  • 1 "A Model for Web Service Discovery and Invocation in JXTA", Shafeer Hussain Hajamohideen - Foliensatz über das Zusammenspiel von Web Services und JXTA
  • 2 "Ad-Hoc-Web-Services durch P2P-Technologien", Ludwig Mittermeier und Roy Oberhauser
  • 3 Master's Thesis "A Web Service Architecture in Mobile Ad hoc Networks", Mia Backlund Norberg und Terése Taaveniku

File Sharing

Cluster Computing

  • ...

Internet Content Delivery

Synchronisation

  • OWA, OMA, OMA DS und SyncML
'Persönliche Werkzeuge