Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Entwicklung von Peer-to-Peer-Anwendungen mit Hilfe der JXTA-Technologie Hauptseminar Wintersemester 2002/2003 Bearbeiter: Dirk Michael Betreuer: Dr. Ing.

Ähnliche Präsentationen


Präsentation zum Thema: "Entwicklung von Peer-to-Peer-Anwendungen mit Hilfe der JXTA-Technologie Hauptseminar Wintersemester 2002/2003 Bearbeiter: Dirk Michael Betreuer: Dr. Ing."—  Präsentation transkript:

1 Entwicklung von Peer-to-Peer-Anwendungen mit Hilfe der JXTA-Technologie Hauptseminar Wintersemester 2002/2003 Bearbeiter: Dirk Michael Betreuer: Dr. Ing. Jürgen Nützel

2 Gliederung Seite 1 Übersicht über Peer-to-Peer-NetzwerkeEinführung in die JXTA-TechnologieErklärung der wichtigsten KonzepteZusammenfassung und Ausblick

3 Übersicht: Peer-to-Peer-Netzwerke Seite 2 dezentral organisiertes Netzwerk direkter Austausch von Ressourcen zwischen den einzelnen Systemen gleichzeitig Client als auch Server im Gegensatz dazu: zentral organisiertes Netzwerk Client/Server-Architektur Anwendungsgebiete für P2P-Netzwerke File Sharing Distributed Computing Instant Messaging

4 Übersicht: Peer-to-Peer-Netzwerke Seite 3 echtes P2P A BD C Beispiel: Gnutella Beispiel: SETI AB CD Server assistiertes P2P Ausprägungen von P2P-Netzwerken

5 Einführung in die JXTA-Technologie Seite 4 Was ist JXTA ? gedacht für die einfache Entwicklung von komplexen P2P-Anwendungen kein Design der grundlegenden Kommunikationsmechanismen nötig Sammlung an Protokollen für Kommunikation Implementationen für verschiedene Sprachen (JXTA J2SE Platform) abgeleitet vom Wort juxtapose, bedeutet nebeneinander stellen Woher kommt JXTA ? ursprünglich Forschungsprojekt von SUN Microsystems nun in der Hand einer öffentlichen Entwicklergemeinde Lizenzierung SUN Project JXTA Software License abgeleitet von Apache Software License Version 1.1 Vorteile von JXTA Unabhängig von einer Programmiersprache Unabhängig von Hardware und Betriebssystem Interoperabilität

6 Einführung in die JXTA-Technologie Seite 5 Übersicht über die JXTA-Protokolle Transport (TCP, HTTP) Transport- protokolle Peer Endpoint Protocol Peer Resolver Protocol notwendig Weiterleiten von Botschaften Empfang und Versand Peer Discovery Protocol Pipe Binding Protocol Rendezvous Protocol Peer Information Protocol optional Auffinden von Ressourcen Aufbau eines virtuellen Kanals Verteilung von Nachrichten Abfrage von Statusinformationen

7 Voraussetzungen für JXTA J2SE Platform Seite 6 JXTA J2SE Platform: Referenzimplementierung in JAVA Voraussetzungen JDK oder höher Bibliotheken der JXTA J2SE Platform Implementierung LOG4J der Apache Software Foundation

8 Begrifflichkeiten Seite 7 Peergruppen Zusammenschluss mehrerer Peers zu einer Gruppe hierarchischer Aufbau, oberste Ebene Net Peer Group Gründe: gemeinsame Interessen, sichere Umgebung Relay Peer dient zum Weiterleiten von Nachrichten zum Zielpeer notwendig für Überwindung von Firewalls oder NAT-Umgebungen Rendezvous Peer dient zum Verteilen von Nachrichten an alle bekannten Peers Reichweite nur innerhalb der Peergruppe Advertisements Metadatenstruktur zur Beschreibung von Ressourcen XML-Dokumente Pipes virtueller Kommunikationskanal zwischen zwei oder mehreren Peers Point-to-Point-Pipe, Propagated-Pipe unidirektional, asynchron

9 Aufbau eines JXTA-Netzwerks Seite 8 Net Peer Group Sample Group R1 R2A B Gruppe veröffentlichen Suchanfrage Antwort Pipe-Adv. veröffentlichen Suchanfrage nach Pipe-Adv. Antwort Kommunikations- kanal Anlegen der Gruppe Sample Group R1 A

10 Versenden von Botschaften Seite 9 Austausch von Botschaften ist Basis für Kommunikation Peer Endpoint Protocol, Peer Resolver Protocol Routing von Botschaften zum Zielpeer Überwindung von Firewalls (über HTTP-Port) Peer A will Botschaft nach Peer E senden Internet Rl1 Rl2 Rl3 ABC DEF Relay Peer

11 Seite 10 Internet R1 R2 R3 ABC DEF Rendezvous Peer Verteilung von Botschaften Versenden von Suchanfragen, Veröffentlichen von Ressourcen Discovery Protocol, Rendezvous Protocol Rendezvous Peers dienen als Verteilerstationen nur innerhalb einer Gruppe

12 Erzeugen eines Peers Seite 11 public void startPeer() throws PeerGroupException { PeerGroup netPeerGroup = null; netPeerGroup = PeerGroupFactory.newInstance(); } Erster Start des Peers Konfiguration: Name des Peers, IP-Adresse und Port, Nutzername und Kennwort bekannte Rendezvous- und Relay Peers Anlegen eines lokalen Caches für Speicherung der Advertisements Bei jedem weiteren Start erfolgt Anmeldung entweder manuell über Eingabe der Daten in ein Loginfenster automatisches Login durch Code im Quelltext System.setProperty("net.jxta.tls.principal", username); System.setProperty("net.jxta.tls.password", password);

13 Suchen von Ressourcen Seite 12 Beispiel: Suchen der Gruppe Sample Group public PeerGroupAdvertisement findGroup() throws IOException { DiscoveryService ds = netPeerGroup.getDiscoveryService(); for (int i = 0; i < 5; i++) { Enumeration enum = ds.getLocalAdvertisements( DiscoveryService.GROUP, "Name", "Sample Group"); if ((enum != null) && (enum.hasMoreElements())) return (PeerGroupAdvertisement)enum.nextElement(); ds.getRemoteAdvertisements(null, DiscoveryService.GROUP, "Name", "Sample Group", 1, null); }

14 Aufbau eines Kommunikationskanals Seite 13 A Output Pipe B Input Pipe Erstellung und Veröffentlichung eines Pipe-Advertisements Aufbau einer Input-Pipe Warten auf eingehende Botschaften (asynchron, unidirektional) Pipe-Binding-Protocol Suchen des Pipe-Advertisements des Zielpeers Aufbau einer Output-Pipe Versenden von Botschaften

15 Aufbau eines Kommunikationskanals Seite 14 PipeAdvertisement padv = getPipeAdvertisement(); PipeService ps = netPeerGroup.getPipeService(); OutputPipe op = ps.createOutputPipe(padv, 10000); Message msg = ps.createMessage(); … op.send(msg); Erstellung einer Output-Pipe zum Versenden von Botschaften PipeAdvertisement padv = getPipeAdvertisement(); PipeService ps = netPeerGroup.getPipeService(); InputPipe ip = ps.createInputPipe(padv); while (true) { Message msg = ip.waitForMessage(); receiveMessage(msg); } Erstellung einer Input-Pipe zum Empfang von Botschaften

16 Versand und Empfang von Dateien Seite 15 public void sendFile(String filename, PipeService ps, OuputPipe op) throws IOException { FileInputStream fis = new FileInputStream(filename); int length, count = 0; byte[] buffer = new byte[100000]; do { length = fis.read(buffer); Message msg = ps.createMessage(); msg.setString("FILENAME", filename); msg.setString("PACKAGE_SIZE", String.valueOf(length)); msg.setString("PACKAGE_NO", String.valueOf(++count)); msg.setBytes("CONTENT", buffer); op.send(msg); } while (length != -1); fis.close(); } Versenden einer Datei

17 Versand und Empfang von Dateien Seite 16 public void receiveMessage(Message msg) throws IOException { String filename = msg.getString("FILENAME"); String length = msg.getString("PACKAGE_SIZE"); String no = msg.getString("PACKAGE_NO"); byte[] buffer = msg.getString("CONTENT"); int l = (Integer.valueOf(length)).intValue(); int n = (Integer.valueOf(length)).intValue(); RandomAccessFile raf = getFileHandle(filename); if (l != -1) { raf.seek((n-1) * ); raf.write(buffer, 0, l); } else { raf.close(); } Empfang eines Teilstückes einer Datei

18 Zusammenfassung und Ausblick Seite 17 Zusammenfassung Einfache Entwicklung von P2P-Anwendungen mit JXTA möglich Protokolle übernehmen grundlegende Kommunikationsaufgaben Sprach-, Hardware- und Betriebssystemunabhängigkeit durch XML Relay-Peers zur Überwindung von Firewalls Rendezvous-Peers als Verteilerstationen Referenzimplementierung in JAVA Open Source Ausblick eigene intelligentere Implementation der Protokolle möglich Sicherheitsaspekte (sichere Übertragung, sichere Gruppen) Entwicklung für mobile Endgeräte (JXTA J2ME) Mitwirkung an der Weiterentwicklung von JXTA eigene Projekte mit JXTA

19 Vielen Dank für Ihre Aufmerksamkeit


Herunterladen ppt "Entwicklung von Peer-to-Peer-Anwendungen mit Hilfe der JXTA-Technologie Hauptseminar Wintersemester 2002/2003 Bearbeiter: Dirk Michael Betreuer: Dr. Ing."

Ähnliche Präsentationen


Google-Anzeigen