32
1 Bello Emmanuele TorLUG.org [email protected] P2P facile con JXTA: P2P facile con JXTA: introduzione allo sviluppo introduzione allo sviluppo di applicazioni peer to peer di applicazioni peer to peer Sabato 28 Ottobre 2006 http://www.torlug.org

Bello Jxta Intro

Embed Size (px)

Citation preview

Page 1: Bello Jxta Intro

1

Bello EmmanueleTorLUG.org

[email protected]

P2P facile con JXTA:P2P facile con JXTA: introduzione allo sviluppo introduzione allo sviluppo di applicazioni peer to peerdi applicazioni peer to peer

Sabato 28 Ottobre 2006

http://www.torlug.org

Page 2: Bello Jxta Intro

2

Agenda

• ...strutture e storia!

• applicazioni P2P comuni

• caratteristiche comuni• introduzione a JXTA

• architettura del framework

• una semplice applicazione• live example! ;-)

Page 3: Bello Jxta Intro

3

• Questo talk è:

- una introduzione a JXTA...non si puo' vedere tutto in 45 minuti :-)- un invito a programmare applicazioni P2P.

Precisiamo...

• Questo talk NON è:- la guerra epica tra C e Java!!!- l'enciclopedia di JXTA!!!

Page 4: Bello Jxta Intro

4

• Un sistema P2P:

è un insieme di entità autonome (peers), capaci di auto-organizzarsi, che condividono un insieme di risorse distribuite presenti all’interno di una rete di computers. Il sistema utilizza tali risorse per fornire una determinata funzionalità in modo completamente decentralizzato.

Introduzione

• Paradigma SERVENT

-Risorse condivise: potenza di calcolo, banda, memoria, informazioni, file, etc. etc.

Page 5: Bello Jxta Intro

5

• La comunità:

è il punto forte del sistema, ogni “edge” fornisce e riceve risorse autonomamente (nella maggior parte dei casi!).

-Ad esempio in SETI@Home si donano risorse!

Introduzione 2

-Connessione transiente, IP dinamico, indirizzamento diverso da quello classico...

Page 6: Bello Jxta Intro

6

• Architetture:

-cooperazione decentralizzata-evoluzione dei modelli con la storia-Client/server, puro, ibrido

Introduzione 2

Page 7: Bello Jxta Intro

7

• Campi applicativi:

- File sharing (Napster, KaZaa, Gnutella, ...)- Comunicazione (VoIP, IM, ...)- Distributed Storage (Freenet, ...)- Computazione (Seti@home, ...)- Game on-line multiplayer- ...

Introduzione 3

Page 8: Bello Jxta Intro

8

• Struttura:

- Sistemi non strutturati overlay network dinamica creata dai peer che si collegano è non strutturata. Algoritmi di ricerca basati su flooding o su directory centralizzate

Introduzione 4

- Sistemi strutturati basati su algoritmi DHT(Distributed Hash Tables), stabili. I peer devono eseguire una determinata procedura per connettersi. Complessità garantita dalla rete O(log N)!!!

Page 9: Bello Jxta Intro

9

• Origini:

- Fine anni '60 ARPAnet condivisione di documenti e risorse.

Storia 1

- 1997 USENET basata su newsgroup, modello basato su client/server.- 1999 Napster, prima generazione dei sistemi P2P.

Page 10: Bello Jxta Intro

10

• Origini:

- Dicembre 1999 prima denucnia di RIAA verso Napster....cominciano i problemi etici e legali!!

Storia 1

- Febbraio 2001 2.79 bilioni di file scambiati al mese.

- Luglio 2001 Napster chiude!!!

Page 11: Bello Jxta Intro

11

• Seconda generazione:

- Ottobre 2000 iniziano i sistemi di seconda generazione. Routing gerarchico. Introduzione dei reflector superpeer.

Storia 2

- Introduzione del progetto Gnutella.

- ...riassumiamo...

Page 12: Bello Jxta Intro

12

• Le generazioni P2P:

Storia 3

Page 13: Bello Jxta Intro

13

• Introduzione:

JXTA

- Tecnologia sviluppata da Sun Microsystem (Billy Joy e Mike Clary);- Significa giustapposto, perchè il P2P deve affiancare le tecnologie esistenti e non sostituirle;- JXTA è una suite di protocolli aperti per sviluppare soluzioni interessanti, portabili e leggere;- Esistono le librerie scritte in Java e C, C++;- http://www.jxta.org/

Page 14: Bello Jxta Intro

14

• Cosa fa:

JXTA

- Standardizza le modalità su come i peer si scoprono sulla rete;- Standardizza le ricerche delle risorse tra i peer;- Standardizza le modalità di diffusione delle risorse (pubblicazione);- Usa un sistema a pipes per comunicare;- Standardizza le attività di monitoraggio.

...si utilizza XML che è lo standard per l'interscambio dei dati.

Page 15: Bello Jxta Intro

15

• Overlay Network:

JXTA

Page 16: Bello Jxta Intro

16

• Layer:

JXTA

Page 17: Bello Jxta Intro

17

• Classificazione dei peer:

JXTA

- Identificati da un ID univoco, JXTAID- Un qualsiasi dispositivo connesso alla rete di overlay di JXTA

- Minimal edge peer hanno risorse limitate e solitamente sono dietro un firewall o un NAT. Possono ricevere e inoltrare messaggi, non hanno cache e non svolgono lavoro per altri.

Page 18: Bello Jxta Intro

18

• Classificazione dei peer 2:

JXTA

- Full featured edge peer hanno le stesse funzionalità dei minimal edge peer, in più hanno la cache per memorizzare informazioni sulla rete.

- Rendez-vouz peer stesse funzionalità dei precedenti, offrono servizi di routing, memorizzano informazioni per altri peers. Possiede risorse dicalcolo superiori a quelle dei due precedenti.

Page 19: Bello Jxta Intro

19

• Classificazione dei peer 3:

JXTA

- Relay peer sono in grado di inoltrare messagi per conto di peer che sono dietro FW o dietro NAT.

- Rely peer utili per permettere il collegamento ad una rete JXTA per i peer che sono dietro FW o NAT. Sono peer di boot.

Page 20: Bello Jxta Intro

20

• Gruppi:

JXTA

- servono a suddividere la rete di overlay in base all'applicazione a cui i peer partecipano- nei gruppi ci sono peer con interesse comune;- il peer group definisce:

a) un insieme di servizi;b) politiche di membership;c) scoping;d) monitoraggio.

- sono creati dalle applicazioni.

Page 21: Bello Jxta Intro

21

• Gruppi 2:

JXTA

- al boot per default si appartiene a NetPeerGroup in grado di fornire servizi di base- un peer può unirsi a diversi gruppi durante il suo ciclo vita- rappresentato come albero NetPeerGroup è la radice

NetPeerGroup 1

GameGroup 2AppGroup 3

Page 22: Bello Jxta Intro

22

• Le pipes:

JXTA

- meccanismi per lo scambio di messaggi tra servizi e applicazioni- componenti: pipe, pipe endpoint(in e out), messaggi- collegamenti tramite pipe binding protocol- sono risorse condivise-solitamente sono:

a) point-to-point unicast;b) secure unicast pipes;c) propagate pipes.

- messaggi scambiati con XML

Page 23: Bello Jxta Intro

23

• Gli advertisements:

JXTA

- rappresentazione strutturata di entità, servizi, o risorsa resa disponibile da un peer per gli altri peer- hanno un ciclo di vita per non intasare la cache dei peer- esempio:<?xml version=“1.0”?><!DOCTYPE jxta: PipeAdvertisement><jxta: PipeAdvertisement xmlns:jxta=“http://jxta.org”> <id>

urn:jxta:uuid59616261646162614E504720503250338E3E786229EA460DADC1A176B69B735 </id> <type> JxtaUnicast </type> < name TestPipe </name></jxta:PipeAdvertisement>

Page 24: Bello Jxta Intro

24

• Gli advertisements 2:

JXTA

- peer advertisements- peer group advertisemts- pipe advertisements- peer info advertisements- ...ne esistono altri...li vediamo avanti

....Ora arriva il codice finalmente :-) !!!

Page 25: Bello Jxta Intro

25

• Restonet un valido esempio:

JXTA

Page 26: Bello Jxta Intro

26

• Ricerca di un gruppo:

JXTA

- creazione del riferimento al NetPeerGroup e reperimento del discovery: ...try

{ PeerGroup netpg = PeerGroupFactory.newNetPeerGroup ( );

} catch (PeerGroupException e)

{ System.exit(1); }

DiscoveryService hdisco = netpg.getDiscoveryService ( );...

Page 27: Bello Jxta Intro

27

• Ricerca di un gruppo 2:

JXTA

- ricerca di advertisemnts per RestoPeerGroup: Enumeration ae = null;int count = 3;while (count-- >0){ try { ae = hdisco.getLocalAdvertisements(DiscoveryService.GROUP, “Name”,”RestoNet”); if ((ae !=null) ) break; hdisco.getRemoteAdvertisements(null, DiscoveryService.GROUP, Name”,”RestoNet”,1,null) try { Thread.sleep(timeout) } catch (InterrruptedException ie) { }if (ae == null) <creazione del nuovo gruppo>else <richiesta di partecipazione al gruppo>catch (Exception e) {System.exit(1);}

Page 28: Bello Jxta Intro

28

• Creazione di un gruppo:

JXTA

...String groupURL”jxta:uuid-4d617267657……………….f202002”

PeerGroupID groupID= (PeerGroupID) IDFactory.fromURI(new URI(“urn”,” “,groupURL));

PeerGroup restoNet = null;

ModuleImplAdvertisement implAdv = netpg.getAllPurposePeerGroupImplAdvertisement( );

restoNet = netpg.newGroup(groupID,implAdv,”RestoNet”,”Gruppo Ristoranti”);

...

Page 29: Bello Jxta Intro

29

• Protocolli e servizi:

JXTA

- Discovery Service : Peer Discovery Protocol (PDB);- Pipe Service: Peer Binding Protocol (PBP);- Peer Information Service: Peer Information Protocol (PIP);- Rendez Vouz Service: Rendez Vouz Protocol(RVP);- End Point Service: END Routing Protocol(ERP);- Peer Resolver Service: Peer Resolve Protocol(PRP);- Membership e Access Protocol.

Page 30: Bello Jxta Intro

30

JXTA

• Live Session:

- Per completare l'introduzione a JXTA vediamo live:a) il meccanismo delle pipe;b) il discovery Service;c) la pubblicazione di advertisements;d) la ricerca dei servizi;e) ricezione dei messaggi.

Page 31: Bello Jxta Intro

31

DOMANDE...

Page 32: Bello Jxta Intro

31

GRAZIE...

www.torlug.org

[email protected]