Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

1 mit Java implementiert (Java 2 Standard Edition) Nicole Hänelt, Mike Rohland, Julia Schenk, Rafael Grote P2P Seminar – JXTA im Detail.

Ähnliche Präsentationen


Präsentation zum Thema: "1 mit Java implementiert (Java 2 Standard Edition) Nicole Hänelt, Mike Rohland, Julia Schenk, Rafael Grote P2P Seminar – JXTA im Detail."—  Präsentation transkript:

1 1 mit Java implementiert (Java 2 Standard Edition) Nicole Hänelt, Mike Rohland, Julia Schenk, Rafael Grote P2P Seminar – JXTA im Detail

2 2 1)Definition 2)Welche Protokolle gibt es? 3)Peer Discovery Protocol API 4)Peer Resolver Protocol API 5)Peer Membership Protocol API 6)Peer Information Protocol API 7)Pipe Binding Protocol API 8)Peer Endpoint Protocol API 9)Beispiel P2P – JXTA – Überblick

3 3 Ein Protokoll ist ein wieder verwendbares Verfahren um die Datenübertragung zwischen Computern zu regeln. (JXTA: Java P2P Programming; 22. March 2002) Ein Protokoll (engl.: protocol) enthält Standards für die kontrollierte Übermittlung von Daten (www.net-lexikon.de; gesehen am )www.net-lexikon.de P2P – JXTA – Definition

4 4 1)Definition 2)Welche Protokolle gibt es? 3)Peer Discovery Protocol API 4)Peer Resolver Protocol API 5)Peer Membership Protocol API 6)Peer Information Protocol API 7)Pipe Binding Protocol API 8)Peer Endpoint Protocol API 9)Beispiel P2P – JXTA – Überblick

5 5 Welche Protokolle gibt es? Grundservices, die in einem P2P-Netzwerk ausgeführt werden können müssen: Discovery Membership Communication –Pipe Binding Protocol –Endpoint Protocol –Resolver Protocol Peer Information Protocol P2P – JXTA – Protokolle

6 6 (JXTA: Java P2P Programming; 22. March 2002) P2P – JXTA – Protokolle

7 7 1)Definition 2)Welche Protokolle gibt es? 3)Peer Discovery Protocol API 4)Peer Resolver Protocol API 5)Peer Membership Protocol API 6)Peer Information Protocol API 7)Pipe Binding Protocol API 8)Peer Endpoint Protocol API 9)Beispiel P2P – JXTA – Überblick

8 8 Dienen zur generellen Beschreibung einer jeden Resource, die im P2P-Netz bereitgestellt wird Werden in XML-Dokumente gefasst Es gibt keine DTDs oder Schemata für Advertisments, es reicht wenn ein Advertisment wohlgeformt ist von JXTA vorgegebene Lebensdauer Löschen flushAdvertisements( String id, int type ) throws IOException; P2P – JXTA – Peer Discovery API Advertisements

9 9 Peer Group Advertisement urn:jxta:uuid-AAA AAAAAAA urn:jxta:uuid-DEADBEEFDEAFBABAFEEDBABE Test Wir testen… P2P – JXTA – Peer Discovery API

10 10 Discovery Query Message 2 1 Name *pader* urn:jxta: C P2P – JXTA – Peer Discovery API

11 11 Discovery Response Message 2 1 Name *pader* urn:jxta: DE4 urn:jxta:uuid AB...EF56A JxtaUnicastSecure Jxta.webcam.paderborn P2P – JXTA – Peer Discovery API

12 12 (JXTA: Java P2P Programming; 22. March 2002) P2P – JXTA – Peer Discovery API

13 13 Local Discovery Im lokalen Cache (Cache Management Ordner) nach Advertisements suchen getLocalAdvertisements(int type, String attribute, String value); Suche nach einem Peer Bla getLocalAdvertisements(DiscoveryService.PEER, Name, Bla); P2P – JXTA – Peer Discovery API Veröffentlichung von Advertisements publish(Advertisement adv, int type);

14 14 1 private void findLocalAdvertisements ( ) { 2System.out.println( looking local: ); 3try { 4Enumeration enu = discoveryService.getLocalAdvertisements(DiscoveryService.ADV, null,null); 5 if ((enu != null) && enu.hasMoreElements( )) { 6System.out.println(found local Advertisement: ); 7while (enu.hasMoreElements( )) { 8Advertisement adv = (Advertisement)enu.nextElement( ); 9try { 10 Document doc = adv.getDocument(new MimeMediaType (text/xml)); 11 doc.sendToStream(System.out); 12} 13catch (IOException e) { 14 e.printStackTrace(System.err); 15} 16} 17 } 18} 19catch (IOException e) { 20e.printStackTrace(System.err); 21} 22 } P2P – JXTA – Peer Discovery API Mögliche Implementierung ( Oliver Steinhauer: JXTA Seminar, FU Gießen-Friedberg, SS03 )

15 15 Remote Discovery Eine Anfrage an alle RendezvousPeers senden um ihre lokale DB zu durchsuchen getRemoteAdvertisements( String peerid, int type, String attribute, String value, int threshold ); Problem: Der Peer weiß nicht, wann die Advertisements gefunden wurden. P2P – JXTA – Peer Discovery API Veröffentlichung von Advertisements remotePublish( Advertisement adv, int type );

16 16 Remote Discovery mit Listener getRemoteAdvertisements( String peerid, int type, String attribute, String value, int threshold, DiscoveryListener listener ); Bei jeder Antwort wird der DiscoveryListener aufgerufen. discoveryEvent(DiscoveryEvent discoveryEvent); // behandelt // Event vom Discovery Service Das DiscoveryEvent Objekt getResponse(); // liefter DiscoveryResponseMsg DiscoveryResponseMsg getResponses(); // liefert Aufzählung der Advertisements zurück P2P – JXTA – Peer Discovery API

17 17 1)Einführung 2)Welche Protokolle gibt es? 3)Peer Discovery Protocol API 4)Peer Resolver Protocol API 5)Peer Membership Protocol API 6)Peer Information Protocol API 7)Pipe Binding Protocol API 8)Peer Endpoint Protocol API 9)Beispiel P2P – JXTA – Überblick

18 18 P2P – JXTA – Peer Resolver API Peer Resolver API - wird zur Suche im P2P Netz benutzt - dazu werden Anfragen (query) an andere Peers versendet - und Antworten (response) empfangen - keine Übermittlungsgarantien - Rendezvous Peers können Übermittlung ablehnen oder dabei ausfallen - keine Antwortgarantien - weder wenn keine Antworten vorhanden noch Antworten vorhanden

19 19 P2P – JXTA – Peer Resolver API Resolver API Classes - ResolverInterface – Interface zur Implementierung des ResolverServices - ResolverService – Interface definiert QueryHandler Verwaltung - GenericResolver – Interface definiert senden von Messages - QueryHandler – Interface zur Message Verarbeitung - ResolverQuery – Standardimplementierung - ResolverResponse – Standardimplementierung

20 20 P2P – JXTA – Peer Resolver API QueryHandler im Detail -int processQuery(ResolverQuery query) - Ablaufsteuerung mittels Rückgabewert: - ResolverService.OK - ResolverService.Repropagate - void processResponse (ResolverResponse response); -keine weitere Ablaufsteuerung da Endpunkt

21 21 P2P – JXTA – Peer Resolver API I Benutzen des ResolverServices ResolverServiceImpl resolver; resolver = (ResolverServiceImpl)group. getResolverService(); TestQueryHandler handler = new TestQueryHandler(handlerName,credential); resolver.registerHandler(handlerName, handler); Starten: Beenden: resolver.unregisterHandler(handlerName);

22 22 P2P – JXTA – Peer Resolver API II Benutzen des ResolverServices // xml AbfrageDokument erstellen StructuredTextDocument doc = null; doc = (…)StructuredDocumentFactory. newStructuredDocument( new MimeMediaType("text/xml"),"Pong"); Element e = doc.createElement("timestamp 1", format.format(new Date(now))); doc.appendChild(e); String credential = p2pSeminar"; Abfragen:

23 23 P2P – JXTA – Peer Resolver API III Benutzen des ResolverServices // Query erstellen ResolverQueryMsg message = null; String xml = serializeDoc(doc); message = new ResolverQuery(handlerName, credential, group.getPeerID().toString(), xml, 1); // und versenden; löst eine RunTimeException // aus, sofern der Peer nicht vorhanden resolver.sendQuery(peerID, message);

24 24 1)Einführung 2)Welche Protokolle gibt es? 3)Peer Discovery Protocol API 4)Peer Resolver Protocol API 5)Peer Membership Protocol API 6)Peer Information Protocol API 7)Pipe Binding Protocol API 8)Peer Endpoint Protocol API 9)Beispiel P2P – JXTA – Überblick

25 25 P2P – JXTA – Peer Membership API Peer Membership API - Mechanismus um PeerGroup beizutreten - nicht zum Management einer PeerGroup gedacht - Peer muss Anforderungen des Membership Protokolls erfüllen - im Erfolgsfall wird ein credential vergeben - kein zentrales Verzeichnis aller Gruppenmitglieder

26 26 P2P – JXTA – Peer Membership API AuthenticationCredential und Credential Credential -> Berechtigungsnachweis (dict.leo.org; gesehen am ) AuthenticationCredential enthält: - Authentifizierungsmethode - anfängliche Identifizierungsinformationen Credential enthält: - Identifizierungsinformationen

27 27 P2P – JXTA – Peer Membership API MembershipService Service

28 28 P2P – JXTA – Peer Membership API I Ablauf eines PeerGroup Beitritts // 1. MembershipService von der PeerGroup // empfangen MembershipService membership; membership = (MembershipService) newGroup.getMembershipService(); // 2. AuthenticationCredential erstellen AuthenticationCredential authCred authCred = new AuthenticationCredential (newGroup,authenticationMethod);

29 29 P2P – JXTA – Peer Membership API II Ablauf eines PeerGroup Beitritts // 3. Authenticator vom MembershipService // empfangen Authenticator authenticator = (Authenticator)membership.apply(authCred); // 4. Authenticator Objekt ausfüllen authenticator.methodXYZ(valueABC);

30 30 P2P – JXTA – Peer Membership API III Ablauf eines PeerGroup Beitritts /* 5. Authenticator mittels isReadyForJoin() testen und 6. mit Authenticator beim MembershipService anmelden */ if( authenticator.isReadyForJoin()) { finalCredential = membership.join(authenticator); } Credential empfangen

31 31 1)Einführung 2)Welche Protokolle gibt es? 3)Peer Discovery Protocol API 4)Peer Resolver Protocol API 5)Peer Membership Protocol API 6)Peer Information Protocol API 7)Pipe Binding Protocol API 8)Peer Endpoint Protocol API 9)Beispiel P2P – JXTA – Überblick

32 32 Peer Endpoint Protokoll (Core) Rendezvous Protokoll (Standard) Peer Resolver Protokoll (Core) Peer Information Protokoll (Standard) Pipe Binding Protokoll (Standard) Peer Discovery Protokoll (Standard) Protokollhierarchie von JXTA Core - required components and behaviours for all JXTA implementations Standard – optional but recommended P2P – JXTA – Peer Information API

33 33 Peer Information Protokoll - Sobald ein Peer lokalisiert ist, ist es interessant seinen Status und seine Fähigkeiten abzufragen PIP - Zwei Nachrichtentypen: - Peer Info Query Message (Status des Remote Peers abfragen) - Peer Info Response Message (Seinen Status einem anderen Peer zugänglich machen) - Spezielle Implementation des Peer Resolver Protokolls - Peer publiziert seine PeerAdvertisement andere Peers lokalisieren diese und ziehen daraus Informationen über den zugehörigen Peer - Dient dem Standard JXTA Service PeerInfoService (optional aber empfohlen) P2P – JXTA – Peer Information API

34 34 PIP Query Message request Feld kann genutzt werden um einen speziellen Request zu bezeichenen, wenn nicht Anfrage liefert default Set von Informationen P2P – JXTA – Peer Information API

35 P2P – JXTA – Peer Information API PIP Response Message

36 36 - Peer Informationen lokalisieren und speichern in Form des PeerInfoAdvertisements. PeerInfoService Interface P2P – JXTA – Peer Information API

37 37 PeerInfoAdvertisement P2P – JXTA – Peer Information API

38 38 1)Einführung 2)Welche Protokolle gibt es? 3)Peer Discovery Protocol API 4)Peer Resolver Protocol API 5)Peer Membership Protocol API 6)Peer Information Protocol API 7)Pipe Binding Protocol API 8)Peer Endpoint Protocol API 9)Beispiel P2P – JXTA – Überblick

39 39 JXTA... Pipes... - Virtuelle Kommunikationskanäle zwischen Computern, beschrieben durch PipeAdvertisements - Bieten virtuelle Eingangs – und Ausgangsmailboxen, die nicht physisch an eine spezielle Peer Lokation gebunden sind - Eindeutig identifiziert durch Pipe ID - Zwei Enden: - Input Pipe (empfangendes Ende) - Output Pipe (sendendes Ende) P2P – JXTA – Pipe Binding API

40 40 Pipe Binding Protokoll - Regelt den Aufbau eines virtuellen Kanals zwischen zwei oder mehreren Knoten - JXTA HTTP Transport, JXTA TCP/IP Transport, JXTA TLS Transport - Wird verwendet um die Enden einer Pipe mit den jeweiligen Endpunkten der Knoten zu verbinden P2P – JXTA – Pipe Binding API

41 41 PipeAdvertisement - Wird vom Pipe Service genutzt, um die Endpunkte für lokalen Input und Output der Pipe zu erstellen - Enthält Pipe ID - Muss Pipe Type enthalten - JxtaUnicast: unsicher und nicht zuverlässig - JxtaUnicastSecure: Sicher (nutzt TLS) - JxtaPropagate: senden an mehre - Kann optionalen symbolischen Namen enthalten P2P – JXTA – Pipe Binding API

42 42 Pipe Advertisement Schema P2P – JXTA – Pipe Binding API

43 43 PipeService P2P – JXTA – Pipe Binding API

44 44 Der Pipe Prozess (1)Peer der Information möchte öffnet eine input Pipe (2)Peer der Information möchte veröffentlicht seine Pipe (3)Peer mit Daten öffnet output Pipe zur input Pipe (4)Peer mit output Pipe sendet Daten (1) Gruppe veröffentlicht Pipe Advertisement (2) Listener Peer erstellt input Pipe aus Advertisement (3) Talk Peer erstellt output Pipe, die an den listener Peer adressiert ist (4) Talk Peer sendet Nachricht auf die Pipe (5) Listener empfängt Nachricht Ich such mir jemanden zum reden Ich hab ein offenes Ohr, wer erzählt mir was P2P – JXTA – Pipe Binding API

45 45 Verbinden von Pipes - Blind Pipe - Listener Pipe ist immer blind und akzeptiert Verbindung von jedem Peer - Blind Output Pipe - Blind Output Pipe with Listener - Blind Input Pipe - Blind Input Pipe with Listener - Peer-addressed Pipe - Adressed Output Pipe Output Pipes können sowohl blind als auch explizit adressiert sein P2P – JXTA – Pipe Binding API

46 46 - Bidirektionale Pipes - Der BidirectionalPipeService ist ein optionaler Service, mit dem (welch Wunder !) bidirektionale Pipes erzeugt werden können - Reliable Pipes - Mit dem ReliablePipeService können Nachrichten zuverlässig über Pipes gesendet werden - Nachrichten werden in der Reihenfolge empfangen in der sie auch gesendet wurden - Die Nachricht erreicht garantiert ihren Empfänger - Können auch verschlüsselt werden Pipes, Pipes, Pipes… P2P – JXTA – Pipe Binding API

47 47 1)Einführung 2)Welche Protokolle gibt es? 3)Peer Discovery Protocol API 4)Peer Resolver Protocol API 5)Peer Membership Protocol API 6)Peer Information Protocol API 7)Pipe Binding Protocol API 8)Peer Endpoint Protocol API 9)Beispiel P2P – JXTA – Überblick

48 P2P – JXTA – Peer Endpoint API Peer Endpoint Protocol - Nachrichtenaustausch zwischen Peers - wird hauptsächlich von anderen Protokollen benutzt - direkte Benutzung sinnvoll für Implementierung neuer Endpoint-Protokolle Implementierung eigener Pipes Überwachung bzw. Steuerung des Netzes - Zugriff über Interface PeerGroup: EndpointService getEndpointService();

49 P2P – JXTA – Peer Endpoint API Filter Listener - zum Manipulieren oder Blockieren von Nachrichten - Registrieren in EndpointService void addIncomingMessageFilterListener( MessageFilterListener listener, String namespace, String name); - Interface MessageFilterListener Message filterMessage(Message message, EndpointAddress srcAddr, EndpointAddress dstAddr);

50 P2P – JXTA – Peer Endpoint API Ping boolean ping(EndpointAddress addr); - prüft Erreichbarkeit eines Peers - ist unabhängig vom benutzten Protokoll - unterscheidet sich vom traditionellen Netzwerk-Ping einzige Information: true oder false Verlässlichkeit hängt vom Protokoll ab

51 P2P – JXTA – Peer Endpoint API Endpoint Messenger - zum Senden von Nachrichten an einen Endpoint - Messenger getMessenger(EndpointAddress addr) - Interface Messenger boolean sendMessage(Message msg) throws IOException; void close(); - entspricht OutputPipe ( Pipe Binding)

52 P2P – JXTA – Peer Endpoint API Endpoint Listener - Registrieren in EndpointService boolean addIncomingMessageListener( EndpointListener listener, String serviceName, String serviceParam); - Interface EndpointListener void processIncomingMessage( Message message, EndpointAddress srcAddr, EndpointAddress dstAddr);

53 53 1)Einführung 2)Welche Protokolle gibt es? 3)Peer Discovery Protocol API 4)Peer Resolver Protocol API 5)Peer Membership Protocol API 6)Peer Information Protocol API 7)Pipe Binding Protocol API 8)Peer Endpoint Protocol API 9)Beispiel P2P – JXTA – Überblick

54 P2P – JXTA – Beispiel: Peer Group Discovery Beispielprogramm: Peer Group Discovery - Programmablauf Verbinden mit Rendezvous-Peer Senden einer DiscoveryRequest-Message Auflistung aller Peers der gefundenen PeerGroups - Quelle Sun Microsystems, Project JXTA 2.0: Java Programmers Guide, 2003, Seiten

55 P2P – JXTA – Beispiel: Peer Group Discovery Start JXTA I public class GroupDiscoveryDemo implements DiscoveryListener { static PeerGroup netPeerGroup = null; private DiscoveryService discovery; private RendezVousService rdv; private void startJxta() { try { netPeerGroup = PeerGroupFactory.newNetPeerGroup(); } catch ( PeerGroupException e) {...}

56 P2P – JXTA – Beispiel: Peer Group Discovery Start JXTA II discovery = netPeerGroup.getDiscoveryService(); rdv = netPeerGroup.getRendezVousService(); //Wait until we connect to a rendezvous peer System.out.print("Waiting to connect..."); while (! rdv.isConnectedToRendezVous()) { try { Thread.sleep(2000); } catch (InterruptedException ex) {} } System.out.println("connected!"); }

57 P2P – JXTA – Beispiel: Peer Group Discovery Discovery Message public void run() { try { // Register as a DiscoveryListener discovery.addDiscoveryListener(this); while (true) { System.out.println("Sending a Dis... // look for any peer group discovery.getRemoteAdvertisements(null, DiscoveryService.GROUP,null,null,5);... // 60 Sekunden warten }

58 P2P – JXTA – Beispiel: Peer Group Discovery Discovery Listener I public void discoveryEvent(DiscoveryEvent ev){ DiscoveryResponseMsg res = ev.getResponse(); String name = "unknown"; // Get the responding peer's advertisement PeerAdvertisement peerAdv = res.getPeerAdvertisement(); // some peers may not respond with peerAdv if (peerAdv!=null) name = peerAdv.getName(); System.out.println (" Got a Di..." + name);

59 P2P – JXTA – Beispiel: Peer Group Discovery Discovery Listener II // now print out each discovered peer group PeerGroupAdvertisement adv = null; Enumeration enum = res.getAdvertisements(); if (enum != null ) { while (enum.hasMoreElements()) { adv = (PeerGroupAdvertisement) enum.nextElement(); System.out.println(...+ adv.getName()); }

60 P2P – JXTA – Beispiel: Peer Group Discovery Main static public void main(String args[]) { GroupDiscoveryDemo myapp = new GroupDiscoveryDemo(); myapp.startJxta(); myapp.run(); }

61 P2P – JXTA – Beispiel: Peer Group Discovery Ausgabe Waiting to connect to rendezvous...connected! Sending a Discovery message Got a Discovery Response [3 elements] from peer : unknown Peer Group = football Peer Group = mygroup Peer Group = baseball Sending a Discovery message Got a Discovery Response [2 elements] from... Peer Group = testgroup1 Peer Group = soccer

62 62 Daniel Brookshier, Darren Govoni, Navaneeth Krishnan, Juan Carlos Soto: JXTA: Java P2P Programming Sams Publishing, March 22, Oliver Steinhauer: JXTA Seminar, FU Gießen-Friedberg, SS03 Kai Wolter: JXTA, Universität Paderborn, 2002 Brendon J. Wilson, JXTA, New Riders, P2P – JXTA – Quellen

63 63 The End… Nicole Hänelt, Mike Rohland, Julia Schenk, Rafael Grote P2P Seminar – JXTA im Detail


Herunterladen ppt "1 mit Java implementiert (Java 2 Standard Edition) Nicole Hänelt, Mike Rohland, Julia Schenk, Rafael Grote P2P Seminar – JXTA im Detail."

Ähnliche Präsentationen


Google-Anzeigen