1 / 19

Entwicklung von Peer-to-Peer-Anwendungen mit Hilfe der JXTA-Technologie

Hauptseminar Wintersemester 2002/2003. Entwicklung von Peer-to-Peer-Anwendungen mit Hilfe der JXTA-Technologie. Bearbeiter: Dirk Michael. Betreuer: Dr. Ing. Jürgen Nützel. Gliederung. Übersicht über Peer-to-Peer-Netzwerke. Einführung in die JXTA-Technologie.

pete
Download Presentation

Entwicklung von Peer-to-Peer-Anwendungen mit Hilfe der JXTA-Technologie

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Gliederung Übersicht über Peer-to-Peer-Netzwerke Einführung in die JXTA-Technologie Erklärung der wichtigsten Konzepte Zusammenfassung und Ausblick Seite 1

  3. Übersicht: Peer-to-Peer-Netzwerke • 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 Seite 2

  4. Übersicht: Peer-to-Peer-Netzwerke • echtes P2P • assistiertes P2P A A B B D Server C D C Ausprägungen von P2P-Netzwerken • Beispiel: Gnutella • Beispiel: SETI Seite 3

  5. Einführung in die JXTA-Technologie • 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 Seite 4

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

  7. Voraussetzungen für JXTA J2SE Platform http://www.jxta.org http://www.apache.org JXTA J2SE Platform: Referenzimplementierung in JAVA • Voraussetzungen • JDK 1.3.1 oder höher • Bibliotheken der JXTA J2SE Platform Implementierung • LOG4J der Apache Software Foundation Seite 6

  8. Begrifflichkeiten • 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 Seite 7

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

  10. Versenden von Botschaften Internet D E F Rl2 Rl1 A B C Rl3 • 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) Relay Peer Peer A will Botschaft nach Peer E senden Seite 9

  11. Verteilung von Botschaften Internet D E F R2 R1 A B C R3 • Versenden von Suchanfragen, Veröffentlichen von Ressourcen • Discovery Protocol, Rendezvous Protocol • Rendezvous Peers dienen als Verteilerstationen • nur innerhalb einer Gruppe Rendezvous Peer Seite 10

  12. Erzeugen eines Peers public void startPeer() throws PeerGroupException { PeerGroup netPeerGroup = null; netPeerGroup = PeerGroupFactory.newInstance(); } System.setProperty("net.jxta.tls.principal", username); System.setProperty("net.jxta.tls.password", password); • 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 Seite 11

  13. Suchen von Ressourcen • 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); } } Seite 12

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

  15. Aufbau eines Kommunikationskanals 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 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 Seite 14

  16. Versand und Empfang von Dateien 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 Seite 15

  17. Versand und Empfang von Dateien 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) * 100000); raf.write(buffer, 0, l); } else { raf.close(); } } Empfang eines Teilstückes einer Datei Seite 16

  18. Zusammenfassung und Ausblick • 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 Seite 17

  19. Vielen Dank für Ihre Aufmerksamkeit

More Related