Réseaux pair-à-pair structurés en ProActive
|
|
|
- Pierre-Antoine Lavergne
- il y a 10 ans
- Total affichages :
Transcription
1 Université de Nice-Sophia Antipolis Master 1 Informatique Réseaux pair-à-pair structurés en ProActive Rapport TER Etudiants Kilanga Nyembo Fanny Pellegrino Laurent Trovato Alexandre Huet Encadrant Fabrice
2 Remerciements Nous tenons tout particulièrement à remercier Imen Filali et Brian Amedro pour leur aide ainsi que notre encadrant Fabrice Huet sans oublier l équipe Oasis de l Inria Méditerranée qui a eu la gentillesse de répondre à nos diverses questions tout au long de notre Travail d Étude et de Recherche. 1
3 Table des matières 1 Introduction 3 2 Etat de l Art Historique des réseaux pair-à-pair Réseaux pair-à-pair non-structurés Réseaux pair-à-pair structurés Protocoles étudiés CAN (Content Adressable Network) Chord ProActive Les objets actifs Sémantique des communications Communications de groupes typés Fonctionnalités avancées Déploiement GCM avec ProActive Travail effectué Choix de conception Représentation d un pair Communication entre pairs Implémentation Déploiement Gestion de projet Environnement de travail Outils utilisés Subversion Wiki Gestion de risque Moyens de contrôle Répartition des tâches Conclusion 28 2
4 Chapitre 1 Introduction Les réseaux pair-à-pair ont beaucoup évolué ces dernières années à tel point que les dernières générations de systèmes pair-à-pair fournissent à leurs usagers des applications de «télévision sur Internet» et de «Vidéo-à-la-demande». Que ce soit pour un usage grand public tel que les deux exemples cités précédemment ou bien pour des applications scientifiques afin de répartir des calculs ou stocker des données, il est de nos jours de plus en plus courant d avoir la nécessité de recourir à l utilisation de réseaux pair-à-pair. Il existe deux approches différentes concernant les réseaux pair-à-pair : structurés et non-structurés. ProActive disposant déjà d une implémentation de réseaux pair-à-pair non-structurés, notre travail consiste donc à : étudier les concepts de la programmation distribuée, en particulier avec ProActive ; étudier les protocoles CAN et Chord ; élaborer une librairie flexible basée sur ProActive pour former des réseaux pair-àpair structurés ; valider l implémentation en testant un protocole structuré à large échelle (c est-àdire sur plusieurs centaines de pairs); étendre l implémentation de CAN et de Chord dans le but de pouvoir répondre aux critères du projet européen SOA4ALL consistant à utiliser des réseaux pair-à-pair structurés pour stocker intelligemment des données à grande échelle. Ce rapport est découpé en plusieurs grandes parties qui reflètent les points importants de cette étude. Le chapitre 2 permet d entrer dans le contexte des réseaux pair-à-pair et aussi de comprendre leurs évolutions. Nous y présentons également la librairie ProActive que nous avons étudié. Le chapitre 3 présente quant à lui le travail effectué tant sur le plan de l implémentation, que sur les différents choix effectués tout au long de notre travail. Le chapitre 4 est consacré à la gestion du projet. Celui-ci présente notre environnement de travail, la gestion des risques, les moyens de contrôles mis en place ainsi que la répartition des tâches. Pour terminer, le chapitre 5 effectue un bilan de nos travaux et présente certaines perspectives. 3
5 Chapitre 2 Etat de l Art Pour échanger des fichiers, les ordinateurs doivent communiquer entre eux. Le mode de communication le plus répandu est la connexion dite «client-serveur 1». Dans le cas de l échange de fichiers sur des réseaux «pair-à-pair», les ordinateurs qui participent à l échange sont tour à tour demandeur et donneur, client et serveur. Ce sont des «pairs» : la communication s effectue sur un pied d égalité. Pour qu un réseau pair à pair existe et fonctionne, il faut que le réseau soit doté de règles de fonctionnement communes à tous : c est ce que l on appelle le protocole du réseau. C est lui qui spécifie comment et selon quel format les ordinateurs s échangent des informations. Par exemple : qui possède tel ou tel fichier? comment initier un transfert de données? Les protocoles identifient l ordinateur qui propose le fichier, et contrôlent le transfert des données. 2.1 Historique des réseaux pair-à-pair Le protocole d un réseau pair-à-pair englobe toutes les règles organisant les échanges de messages entre pairs. Toutes les activités sont ainsi encadrées : recherche des adresses IP, gestion et contrôle des fragments de fichiers échangés, etc. Cependant, la mise en place de ces protocoles génère un trafic d informations très abondant sur ces réseaux. C est à partir de cette constatation que l on a vu apparaître deux types de réseaux pair-à-pair : ceux non-structurés 2 et ceux structurés cherchant à optimiser les protocoles sur divers critères (quantité de données échangées, complexité de recherche) en utilisant diverses topologies ayant des propriétés mathématiques avantageuses. 1. Un ordinateur, le client, émet une demande qu on appelle une requête. Il l émet à destination d un autre ordinateur, le serveur, qui contient le fichier recherché et l envoie au client. Le mode client serveur est, par exemple, le mode de fonctionnement de la navigation sur internet. L internaute, grâce au navigateur, émet à partir de son ordinateur une requête au serveur du site internet qu il consulte. Le serveur lui envoie en réponse les fichiers de la page web, les images, les vidéos, etc. 2. Réseau pair-à-pair dont les liens entre les pairs sont choisis arbitrairement. 4
6 2.1.1 Réseaux pair-à-pair non-structurés Dans les réseaux pair-à-pair non-structurés chaque pair est complètement autonome et la propagation des requêtes se fait par inondation en interrogeant tous les pairs du réseau jusqu à l obtention du pair concerné. Les mécanismes sont simples et faciles à implémenter cependant les performances lors de la recherche d un pair sur le réseau sont souvent limitées. Le réseau Gnutella[Wik] est l un des premiers réseaux non-structurés qui a mis en évidence le problème d abondance de communication entre pairs. Pour exemple, dans sa version 0.4, le volume des données liées au protocole était aussi important que celui des fichiers échangés Réseaux pair-à-pair structurés Les réseaux pair-à-pair structurés recherchent l efficacité. Pour cela ils organisent l espace des pairs ainsi que la répartition des ressources sur les pairs selon une topologie ayant certaines propriétés avantageuses. Par exemple un espace en N dimensions pour CAN ou un anneau pour Chord. La gestion des ressources quant à elle s appuie souvent sur l utilisation d une table de hachage distribuée. Le principe des tables de hachage distribuées consiste à utiliser une fonction de hachage pour faire correspondre à chaque ressource une valeur de hachage sous forme d une chaîne de bits de longueur fixée (supérieure ou égale à 128 bits). Cette chaîne de caractères devient l «identifiant» du fichier. Les nœuds en charge d une empreinte sont ceux dont l identifiant est très proche. Dans l approche par tables de hachage distribuées, grâce à la structuration des connaissances, on peut trouver les nœuds en charge de l empreinte en routant de proche en proche en un nombre d étapes qui est logarithmique par rapport au nombre de nœuds. La recherche est donc beaucoup plus efficace : typiquement, une dizaine d échanges de messages au lieu de quelques centaines voire quelques milliers si la donnée cherchée n est pas répliquée. Pour signifier le partage d un fichier, son possesseur doit contacter le nœud en charge de l empreinte du fichier pour lui indiquer son adresse IP. Un pair qui recherche le fichier n aura qu à contacter ce même nœud pour retrouver l adresse IP du pair (ou des pairs) le partageant. C est donc sur ce genre d approche qu ont été élaborés les protocoles structurés tel que CAN ou Chord. 5
7 2.2 Protocoles étudiés CAN (Content Adressable Network) CAN est un protocole de réseau pair-à-pair structuré s appuyant sur une topologie à N dimensions. Les ressources sont réparties dans une zone multidimensionnelle, délimitée par des coordonnées. Chaque pair s occupe d une zone. Supposons que nous sommes dans un repère en deux dimensions, alors chaque pair s occupe de gérer une zone définie par deux coordonnées minimales et maximales tout en maintenant à jour la liste de ses voisins (nord, est, sud, ouest). Cette zone contient les ressources que le pair partage. Un exemple de réseau CAN en deux dimension est illustré sur la Figure 2.1. y Légende : Zone Pair Ressource x Figure 2.1 Exemple de réseaux pair-à-pair CAN en 2 dimensions Lookup L algorithme de Lookup (illustré sur la Figure 2.2) permet de trouver un pair sur le réseau. Pour cela il faut pouvoir router un message sur le réseau afin de trouver celui qui gère les coordonnées cherchées. Le routage consiste donc en trois étapes : 1. si le pair sur lequel on se trouve contient les coordonnées cherchées, le pair à été trouvé on peut donc renvoyer un message de réponse; 2. sinon on parcourt les différentes dimensions : on part de la première, si sur cette dimension la cordonnées cherchée est contenue par le pair on passe à la dimension suivante sinon on envoie le message au pair voisin se trouvant le plus proche de la coordonnée cherchée sur l axe courant; 3. si l on vient à avoir plusieurs voisins pour une dimension et une direction, il faut alors envoyer le message au voisin étant le plus proche de la coordonnée cherchée sur la dimension suivante. 6
8 ETAPE 1 ETAPE 2 ETAPE 3 (x,y) (x,y) (x,y) y3 y3 y3 Q(x,y) y2 y1 Q(x,y) y2 y1 x Є Zone Q(x,y) y2 y1 Figure 2.2 Exemple de routage d un message Join La fonctionnalité d adhésion au réseau qui utilise l algorithme de Split permet à un nouveau pair de joindre un réseau existant. Lors de l arrivée d un nouveau pair sur un réseau il faut pouvoir scinder l espace géré. L algorithme défini dans CAN se décrit en plusieurs étapes. En effet, le nouveau pair doit pouvoir se positionner sur le réseau. Pour cela, il faut : choisir des coordonnées aléatoirement; par le mécanisme de routage, trouver le pair gérant ces coordonnées sur le réseau; scinder la zone du pair trouvé, distribuer les ressources et mettre à jour les voisins ; informer les voisins du pair trouvé de l arrivée d un nouveau pair. Leave Cet algorithme permet à un pair de quitter proprement le réseau, sans perte d informations. En effet, lors de son départ, le pair doit pouvoir distribuer ses ressources aux pairs voisins. Pour cela, il notifie ses voisins de son départ afin que sa zone soit fusionnée avec le pair dont il est issu lors de la dernière division de zone. Le pair 2 Pair 1 Pair 2 quitte le réseau Pair 1 Figure 2.3 Algorithme protocole CAN : Leave 7
9 2.2.2 Chord Chord utilise quand à lui une topologie en anneau. Il a pour particularité de disposer d algorithmes d une complexité d au plus O(logN) requêtes pour trouver une information dans un anneau de N éléments en utilisant le principe des tables de hachage distribuées. Afin d obtenir cette complexité, chaque pair maintient une liste de successeurs. Cette liste correspond aux pairs successeurs en puissance de 2 (comme illustré sur la Figure 2.4). P1 P56 P P P9 P10 +4 TABLE DES SUCCESSEURS DE P8 P8 + 1 P9 P8 + 2 P9 P8 + 4 P12 +8 P12 P8 + 8 P P16 P16 P P14 P16 P P P40 P56 P34 P27 Figure 2.4 Exemple de réseau pair-à-pair Chord 2.3 ProActive ProActive est une bibliothèque Java pour le calcul parallèle, distribué et concurrent. Elle est conçue pour permettre de déployer une application sur un grand nombre de machines et ce, avec un maximum de transparence. Le langage Java a été retenu car il permet, avec sa machine virtuelle, une grande souplesse vis-à-vis des multiples architectures que l on peut rencontrer sur une grille de calcul 3. La bibliothèque permet la création d objets distants, la mobilité des applications, les appels de méthodes asynchrones et des communications de groupe. Avec un ensemble réduit de primitives, ProActive fournit une API permettant la programmation d appli- 3. Une grille de calcul permet de faire du calcul distribué : elle exploite la puissance de calcul (processeurs, mémoires, etc.) de plusieurs centaines, voir de millier d ordinateurs afin de donner l illusion d un ordinateur virtuel très puissant. Ce modèle permet de résoudre d importants problèmes de calcul nécessitant des temps d exécution très longs en environnement «classique». 8
10 cations distribuées pouvant être déployées aussi bien sur des réseaux locaux (LAN) que sur un ensemble de grilles de calcul interconnectées via Internet. L un des avantages de cette plateforme est qu aucune modification de l environnement d exécution n est requise, ni aucun préprocesseur ou compilateur spécial. Une machine virtuelle Java standard suffit à utiliser la bibliothèque. Le modèle de distribution de ProActive est parti d un effort de simplification et d un souci de réutilisation de code d applications dans des systèmes à objets, en respectant une sémantique précise Les objets actifs Les objects actifs sont l un des concepts de base pour développer une application répartie avec ProActive. Un objet actif dispose de sa propre thread qui lui permet d exécuter les méthodes invoquées sur cet objet actif par d autres objets (actifs ou non). ProActive permet au programmeur de ne pas manipuler explicitement les threads et surtout la synchronisation. Un objet actif peut être créé sur n importe quel hôte utilisé pour le déploiement de l application. Une fois cet objet créé, son activité et sa position (locale ou distante) sont parfaitement transparents. Un objet actif peut ainsi être manipulé comme s il s agissait d un objet java standard. Le fonctionnement de ProActive s appuie sur deux grands principes : une application distribuée est structurée en sous-systèmes. Il y a donc un objet actif (et donc une thread) pour chaque sous-système et un sous-système pour chaque objet actif. Chaque sous-système se compose ainsi d un objet actif, et éventuellement de plusieurs objets classiques (dit «passifs»). La thread d un sous-système n exécute que les méthodes des objets qui le constitue; il n y a pas de partage d objets passifs entre sous-systèmes. Pour accueillir un objet actif, ProActive a introduit la notion de noeud qui permet d identifier la JVM sur laquelle on souhaite le créer. Un noeud est une entité logique capable d accueillir plusieurs objets actifs. La création d un objet actif se réalise alors comme suit : MaClasse oa = ( MaClasse ) ProActive. newactive ("MaClasse", parametres, noeud) ; On peut remarquer qu il existe d autres approches pour la création d un objet actif, notamment celle qui consiste à rendre actif un objet passif avec la méthode turnactive() Sémantique des communications Pour ses communications entre objets, ProActive s appuie sur Java RMI (Remote Method Invocation). Ce dernier a l avantage d être présent dans toutes les distributions standards de Java. Il est important de noter qu un appel RMI est bloquant, ce qui peut entraîner des attentes inutiles dans l exécution d un programme, comme par exemple l attente d un résultat qui ne sera utilisé que plus tard. 9
11 Pour parer à cet inconvénient de taille, ProActive permet d effectuer des communications aussi bien asynchrones que synchrones. Le choix du mode de communication se fait en fonction de la signature de la méthode : Synchrone : la méthode retourne un objet non réifiable ou peut lever une exception. Dans ce dernier cas, l appelant doit être bloqué pour éviter qu il ne sorte du bloc try/catch. Au total, deux messages auront été échangés. L un lors de l appel de la méthode, et l autre lors de la réception du résultat, une fois que la méthode aura été exécutée. Entre temps, la thread appelante est bloquée. Asynchrone : la méthode retourne un objet de type réifiable et ne peut lever aucune exception. Deux messages seront là aussi échangés, le premier pour l appel de méthode et le second pour la réception du résultat, mais entre temps, la thread appelante n aura pas été bloquée. Dans l attente du résultat, ProActive génère un objet futur. Une utilisation de cet objet sera bloquante tant que le vrai résultat ne sera pas arrivé. Sens-unique : la méthode ne retourne rien (void) et ne lève pas d exception. Un seul message est envoyé pour l appel de méthode, et la thread n est pas bloquée. Aucun futur n est créé étant donné qu il n y a pas de résultat attendu. Les objets futurs sont utilisés par ProActive pour créer un comportement asynchrone alors que les appels RMI sous-jacents sont, eux entièrement synchrones. En effet, dès qu un appel de méthode sur objet actif est réalisé, ProActive construit et retourne immédiatement un objet vide simulant l objet attendu : le futur. La requête RMI est alors déléguée à un autre fil d exécution. Une fois la requête traitée, le résultat obtenu est placé dans le futur. Le futur implémente la même interface que l objet résultat. Ce dernier point explique la nécessité pour un type retour d être réifiable (du moins si l on souhaite profiter de l asynchronisme), car l objet retourné devra pouvoir être sousclassé. Une classe finale ou un type primitif ne peut donc pas convenir. Dans le cas où l objet futur est utilisé alors que le vrai résultat de l appel qui en est à l origine n est pas encore arrivé, ProActive introduit le mécanisme d attente par nécessité qui bloque l exécution jusqu à l arrivée du vrai résultat. De plus, l échange des différents messages est fiabilisée grâce au fait que RMI se base sur le protocole TCP. L appelant peut donc être assuré que le message a été correctement délivré à l objet actif appelé et qu il a été placé dans la file d attente des requêtes que l objet actif appelé doit servir Communications de groupes typés Dans un programme distribué, il est fréquent pour le programmeur d avoir à travailler avec un ensemble d objets de même types, que nous appellerons groupe typé. La communication de groupe est un point crucial dans une application distribuée où la performance est un point important. ProActive propose un mécanisme très flexible pour travailler avec un groupe d objets comme s il ne s agissait que d un simple objet unique. 10
12 Ce système de communication de groupe repose sur le mécanisme élémentaire d invocation distante et asynchrone des méthodes. Il doit être considéré comme une réplique de plusieurs invocations à distance de méthode vers des objets actifs. Naturellement, le but est d incorporer quelques optimisations à l exécution, de façon à réaliser de meilleures exécutions qu un accomplissement séquentiel de n appels de méthode à distance. De cette façon, ce mécanisme est la généralisation du mécanisme de méthode asynchrone sur des objets distants. Du point de vue de la programmation, utiliser un groupe typé prend exactement la même forme que l utilisation d un simple objet de ce type. Ceci est possible grâce à des techniques de réification : la classe d un objet que nous voulons rendre actif et accessible à distance est étendue au moment de l exécution, et les appels de méthode sont réifiés, comme nous l avons vu en abordant la sémantique des communications Fonctionnalités avancées ProActive dispose de fonctionnalités avancées. Lorsqu une méthode nécessite des paramètres, nous pouvons avoir deux comportements : La diffusion (broadcast) va envoyer une copie des paramètres à tous les membres du groupe sans distinction. On utilise donc, ce comportement si l on souhaite diffuser une même information à tout le monde. C est le mode de fonctionnement par défaut des groupes de ProActive. La distribution (scatter) propose de distribuer les paramètres en fonction du membre. Il est ainsi, par exemple, possible de disperser sur plusieurs membres différentes parties d un tableau. Pour ce faire, on rassemble les données à distribuer au sein d un groupe que l on passe en paramètre à l appel de méthode. Le choix de ce mode, se fait en utilisant la méthode setscattergroup() sur le groupe de données Déploiement GCM avec ProActive Le déploiement d une application est un point critique à ne pas négliger. C est notamment le cas lorsqu on souhaite tester un réseau pair-à-pair structuré à grande échelle. Grid Component Model (GCM) Le premier principe du déploiement GCM est d éliminer complètement du code source le nom des machines sur lesquelles on déploie l application ainsi que le protocole utilisé pour les recherches dans le RMI Registry et les accès aux machines sur lesquelles on déploie. Le but est de pouvoir déployer n importe quelle application n importe où sans toucher au code source. Par exemple, il doit être possible d utiliser indifféremment divers protocoles tels que rsh, ssh, Globus, LSF, etc. pour la création de JVM dont l application a besoin. De la même manière, l enregistrement ou la découverte de ressources existantes 11
13 peut être réalisé à l aide de divers protocoles tel que RMIregistry, Globus, etc. La création, l enregistrement et la découverte de ressources doit donc être réalisée en dehors du code métier de l application. Le second point clef du déploiement GCM est la capacité de décrire de manière abstraite une application ou une partie d elle en terme d activités. Cette description doit comprendre les différentes entités parallélisées ou distribuées de l application. Il faut également noter que la description abstraite d une application et la manière de la déployer sont des informations liées. Si nous avons par exemple un moteur de simulation qui doit s enregistrer dans le RMI Registry avec un certain protocole, alors les autres entités se chargeant de réaliser les calculs doivent également utiliser ce protocole afin d effectuer le lookup et lier le moteur pour leur exécution. De plus, une partie du programme peut s occuper d effectuer une recherche pour le moteur (en supposant qu il est démarré indépendamment), ou bien créer explicitement le moteur de simulation elle même. Pour résumer, afin d abstraire la machine sur laquelle à lieu l exécution et permettre un déploiement indépendant, la librairie doit fournir les éléments suivants : une description abstraite des entités distribuées d un programme ou d un composant parallélisé une liaison (faite en dehors du code métier) de ces entités vers des machines réelles en utilisant un protocol choisi pour la création, l enregistrement et la recherche. Pour atteindre ce but, le modèle de programmation utilise la notion de «Nœud virtuel». Un Noeud Virtuel est identifié par un nom. Il est définit et configuré dans un fichier XML de déploiement spécifique nommé le GCMD (Grid Component Model Descriptor). Un Noeud Virtuel est donc utilisé, après activation, dans le code source d une application. Il est lié à un ensemble de Noeuds ProActive. Il est important de noter que la distribution des entités (objets actifs) a lieu sur des Noeuds et non pas sur les Noeuds Virtuels. Les Noeuds virtuels sont un concept d application tandis qu un Noeud est un concept de déploiement : c est un objet qui vit à l intérieur d une JVM, hébergeant des objets actifs. Le processus de déploiement est illustré sur la Figure 2.5 : l application ProActive commence par charger le descripteur de déploiement et déploie à distance sur les machines indiquées dans le descripteur. Bien que le processus derrière le déploiement soit assez compliqué, tout cela est abstrait par ProActive. Dans l application nous devons seulement indiquer le chemin vers le descripteur de déploiement GCMA (Grid Component Model Application) et dire à ProActive de démarrer les Noeuds et les objets actifs. Les communications étant manipulées par ProActive selon le descripteur. Pour faciliter le déploiement tout en respectant ce qui a été dit précédemment, GCM utilise deux descripteurs de déploiement séparés : le GCMA et le GCMD. La liaison entre les deux est réalisée dans le descripteur d application en incluant un ou plusieurs descripteurs de déploiement. 12
14 Figure 2.5 Etapes de déploiement GCM 13
15 Le descripteur d application (GCMA) permet de décrire comment lancer l application souhaitée en indiquant les ressources dont elle a besoin. Les différentes options sont écrites dans un fichier au format XML. Voici un exemple de fichier GCMA : <?xml version="1.0" encoding="utf-8"?> <GCMApplication xmlns=" urn:gcm:application:1.0" xmlns:xsi=" xsi:schemalocation="urn:gcm:application:1.0 fr/ schemas/ gcm/1.0/ ApplicationDescriptorSchema. xsd"> <environment> <javapropertyvariable name="java.home" /> <javapropertyvariable name="proactive.home" /> <javapropertyvariable name="user.home" /> </ environment> <application> <proactive base="root" relpath="${proactive.home}"> <configuration> <java base="root" relpath="${java.home}/bin/java" /> </ configuration> <applicationclasspath> <pathelement base=" proactive" relpath="dist/lib/proactive_examples.jar" /> <pathelement base=" proactive" relpath="dist/lib/ibis-1.4.jar"/> <pathelement base=" proactive" relpath="dist/lib/ibis-connect -1.0.jar" /> <pathelement base=" proactive" relpath="dist/lib/ibis-util-1.0.jar" /> </ applicationclasspath> <virtualnode id="grid2d" capacity="1" /> </ proactive> </ application> <resources> <nodeprovider i d=" Grid2D"> <f i l e path="gcmd_local.xml" /> </ nodeprovider> </ resources> </ GCMApplication> La section environment permet de spécifier les variables d environnement devant être utilisées comme par exemple les variables d environnement Java récupérées lors du lancement de l application. La section application permet, quand à elle, d indiquer le classpath à utiliser lors du déploiement sur les différentes machines. Cela permet, également de dire quel Noeud Virtuel utiliser, sachant qu on peut indiquer pour chaque Noeud Virtuel la capacité, c est-à-dire le nombre de Noeuds à créer. La section resources permet, quand à elle, de lier un Noeud Virtuel à un fichier de type GCMD à l aide d un identifiant. 14
16 Le descripteur de déploiement (GCMD) permet de décrire les ressources fournies par l infrastructure et comment les acquérir. C est comme son confrère, un fichier XML composé de différentes parties, chacune avec différentes options afin d atteindre le but décrit précédemment. Voici un exemple de fichier GCMD que nous allons commenter : <?xml version="1.0" encoding="utf-8"?> <GCMDeployment xmlns=" urn:gcm:deployment:1.0" xmlns:xsi=" xsi:schemalocation="urn:gcm:deployment:1.0 fr/schemas/gcm/1.0/extensionschemas.xsd"> <environment> <javapropertyvariable name="user.home" /> </ environment> <resources> <group refid="sshlan"> <host r efid="computenode" /> </ group> </ resources> <infrastru cture> <hosts> <host i d=" ComputeNode" os=" unix" hostcapaci ty="2" vmcapacity="2"> <homedirectory base="root" relpath="${user.home}" /> </ host> </hosts> <groups> <sshgroup id="sshlan" hostlist="eon[1-20]" /> </ groups> </ infrastructure> </GCMDeployment> De la même manière que pour le GCMA, on retrouve la section environment. La section resources permet de définir des groupes de machine à utiliser. La section infrastructure permet, quand à elle, de spécifier pour les groupes précédemment définis sous quel système d exploitation elles tournent, leur adresses pour se connecter, etc. Les paramètres hostcapacity et vmcapacity définis dans la section hosts permettent respectivement d indiquer un nombre d application qui peut être déployé sur chaque machine faisant partie du groupe hosts défini et d indiquer le nombre de Noeud ProActive à créer par JVM. 15
17 Chapitre 3 Travail effectué 3.1 Choix de conception Notre contrainte principale est d implémenter une librairie flexible de réseaux pairà-pair structurés à l aide de ProActive. Pour cela différents choix architecturaux ont été réalisés Représentation d un pair Les réseaux structurés ayant plusieurs opération basiques communes telles que le lookup, le join, le leave, etc. la classe StructuredOverlay permet donc d abstraire les différentes méthodes communes aux divers protocoles de réseaux pair-à-pair structurés. Chaque protocole doit ensuite définir une classe héritant de StructuredOverlay. Par exemple, le protocole Chord doit implémenter une classe nommée ChordOverlay et hériter de StructuredOverlay afin de redéfinir les méthodes communes. Nous avons choisi d associer à un pair, un objet actif au sens ProActive. Nous avons également décidé qu un pair est composé d un objet de type StructuredOverlay passif (objet au sens java), d un champs de type OverlayType indiquant le type de réseau structuré associé au pair instancié, ainsi que d un objet DataStorage permettant d abstraire les données partagées par le pair. La Figure 3.1 illustre ce qui a été dit précédemment Communication entre pairs La communication entre les différents objets actifs, ici pairs, se déroule par le biais de messages alors que ces communications pourraient s effectuer directement par simple appel de méthode sur l objet distant grâce aux abstractions de ProActive. Ce choix a été fait afin d éviter de multiples problèmes d interblocages 1 (deadlocks) entres les pairs. Ainsi en proposant cette solution, chacun des pairs pourra envoyer sa liste des actions à 1. Un interblocage est un phénomène qui peut survenir en programmation concurrente. L interblocage se produit lorsque deux processus légers (thread) concurrents s attendent mutuellement. Les processus bloqués dans cet état le sont définitivement, il s agit donc d une situation catastrophique. 16
18 Figure 3.1 Diagramme de classes partiel 17
19 effectuer à d autres pairs. Celles-ci seront traités dans l ordre sans être en concurrence avec les actions d un autre pair. Grâce au système de queues de requêtes, Request Queue, de ProActive, chacun des messages reçu par un pair est enregistré dans la queue propre à l objet correspondant et est exécuté dans l ordre de réception. Cela certifie alors que les requêtes envoyées entre pairs seront exécutées, et que si ce pair n est plus présent, une exception Java sera alors levée permettant de signaler un problème lors d une communication entre deux pairs. En réponse à un envoi de message réalisé avec succès, une réponse est renvoyée au destinataire. Cette réponse peut ne contenir aucune information spécifique au message qui a été envoyé, auquel cas la réponse sera de type ResponseMessage. Ou bien dans le cas contraire avoir un type de réponse adapté au message envoyé. Dans ce cas la classe de réponse définie héritera de ResponseMessage afin de pouvoir contenir certaines informations tels que le RTT 2 associé à l envoie du message. Une réponse générique a été définie sous le nom de ActionResponseMessage afin d avoir en retour une réponse permettant uniquement de savoir si l action envoyé via l intermédiaire d un message s est bien déroulée. 3.2 Implémentation Afin d obtenir une librairie flexible il se doit de pouvoir facilement intégrer de nouveaux protocoles sans complètement modifier la conception de la bibliothèque. Pour cela nous avons dès le départ décidé d utiliser le patron de conception 3 Strategy. Le design pattern Strategy permet la séparation de plusieurs algorithmes. Ainsi l algorithme peut varier indépendamment du client qui l utilise. Dans notre cas, nous l utilisons pour séparer les différents algorithmes de réseau pair-à-pair structurés tel que CAN et Chord. Cela nous permet d abstraire les signatures de méthodes identiques pour chacun des types de protocoles. Ainsi, pour l ajout d un nouveau protocole de réseau pair-à-pair, les méthodes communes devront obligatoirement être définies et encapsulées dans un nouveau type d objet qui étendra au sens Java, la classe StructuredOverlay. CAN Ci-dessous sont décrits nos choix d implémentation ainsi que les algorithmes implémentés pour le protocole CAN. Les algorithmes ont tous été tirés d articles scientifiques [RFH + 01] [Rat02] et pour certains adaptés. 2. Le Round-Trip delay Time ou RTT est, dans les réseaux informatiques, le temps que met un signal pour parcourir l ensemble d un circuit fermé. Il représente ici le temps pris en milli-secondes entre l envoie d un message depuis un pair et la réception d une réponse depuis le même pair. 3. Un patron de conception (design pattern en anglais) est un concept destiné à résoudre les problèmes récurrents suivant le paradigme objet. Les patrons de conception décrivent des solutions standard pour répondre à des problèmes d architecture et de conception des logiciels. À la différence d un algorithme qui s attache à décrire d une manière formelle comment résoudre un problème particulier, les patrons de conception décrivent des procédés de conception généraux. On peut considérer un patron de conception comme une formalisation de bonnes pratiques. 18
20 Structures de données Un point crucial pour l implémentation de CAN est la structure de donnée utilisée afin de stocker les voisins d un pair. Pour cela nous nous sommes appuyés sur le fait qu un voisin se trouve dans une direction donnée pour une dimension fixée par rapport au pair courant : soit du côté inférieur; soit du côté supérieur. Pour stocker les références distantes des pairs voisins nous avons créé une classe NeighborsDataStructure dans laquelle nous utilisons un tableau à double dimension où chaque ligne correspond à une dimension et chaque colonne aux deux directions possibles. Chacune des cases du tableau contient une liste Java de type Vector. Ce choix ayant été fait car tous les appels de méthodes de la classe Vector sont synchronisés. De la même manière les objets de type Zone associés aux pairs étant très souvent utilisés, ils sont mémorisés en parallèle dans le même type de liste que les références vers les pairs afin d éviter des appels distants inutiles. L utilisation des groupes ProActive aurait pu être une meilleure solution que l utilisation des listes de type Vector. Cependant afin d éviter des parcours inutiles de la structure de données, nous avons montré qu il était très intéressant de trier les références des pairs en fonction de la coordonnée minimale associée à la zone gérée par chaque pair voisin, pour une direction. Pour cette raison nous avons préféré utiliser la classe Java Vector qui permet en redéfinissant la méthode d ajout, de positionner un objet à la position souhaitée afin d obtenir une liste triée selon le critère défini précédemment. y P2 P3 P4 Inférieure DIRECTIONS Supérieure P1 P6 P7 x y P6 P2 P5 DIMENSIONS P5 VOISINS DE P1 x Figure 3.2 Exemple de stockage des voisins du pair P1 19
21 Algorithmes implémentés Join L algorithme défini dans CAN se décrit en plusieurs étapes. Dans un premier temps, le nouveau pair doit pouvoir se positionner sur le réseau. Pour cela, nous avons différentes possibilités : lui affecter des coordonnées aléatoires ; laisser un Tracker 4 lui donner directement une référence vers un pair en fonction de la charge du réseau qui peut être évaluée en terme de communications, de taille de la zone gérée ou de ressources stockées, ce qui a pour but d alléger le réseau. Dans notre cas, nous avons décidé d utiliser un Tracker afin de ne pas avoir de soucis lors du passage à l échelle. Le Tracker donne donc au pair voulant rejoindre le réseau, une référence vers un pair distant. Ensuite, le pair fait une demande d adhésion au pair récupéré par message en utilisant la classe CANJoinMessage. Lors du traitement du message, le pair concerné est alors chargé d affecter au nouveau pair : 1. sa nouvelle zone qui est le résultat de l algorithme de Split (toutes les dimensions sont parcourues cycliquement); 2. son historique de split avec la dernière opération mais dans le sens opposé (pour conserver l ordre de grandeur); 3. les ressources concernées par cette zone; 4. les voisins du nouveau pair à partir des siens. Pour finaliser cette adhésion, tous les voisins du pair présent doivent être informés de l arrivée d un nouveau pair afin de conserver l état structuré du réseau. Cela est réalisé à l aide de l envoi d un message de type CANAddNeighborMessage aux voisins concernés. Leave Cet algorithme permet à un pair de quitter proprement le réseau, sans perte d informations. En effet, lors de son départ, le pair doit pouvoir distribuer ses ressources aux pairs voisins. Pour cela, il envoie un message de type CANLeaveMessage informant ses voisins de son départ afin que sa zone soit fusionnée avec le pair dont il est issu lors de la dernière division de zone. Merge Le Merge réalise les mêmes opérations que l algorithme de Split lors du Join, mais en sens inverse. En effet, la zone occupée par le pair quittant le réseau est ajouté à celle gérée par au voisin se situant dans la dimension et le sens du dernier Split. Si le pair à plusieurs voisins, alors cet algorithme est appelé récursivement. Cependant cet algorithme n est pas utilisable à grand échelle à cause de la quantité de données à transférer : lors d un appel récursif de l algorithme, l échange des ressources entre les pairs peu devenir important. Ainsi, si le réseau est lourdement chargé, le temps de transaction ne sera pas acceptable. 4. Un traqueur est un serveur connaissant et gardant en permanence une référence vers une partie des pairs du réseau dont il est rattaché. 20
22 SANS OPTIMISATION Pair 3 Le pair 1 Pair 1 Pair 3 quitte le réseau Pair 2 Pair 2 AVEC OPTIMISATION Pair 1 Pair 3 Pair 2 Le pair 1 quitte le réseau Pair 2 Pair 3 Figure 3.3 Optimisation de l algorithme du merge Cet algorithme n est pas utilisable à grande échelle à cause de la quantité de données à transférer : lors d un appel récursif de cet algorithme, l échange des ressources entre les pairs peu devenir important. Ainsi, si le réseau est lourdement chargé, le temps de transaction ne sera pas acceptable. Pour éviter un transfert de ressources trop important, nous avons mis au point avec notre encadrant un algorithme permettant à un pair de fusionner avec d autres lorsqu il souhaite quitter le réseau. Plutôt que d utiliser la récursivité, le principe consiste à distribuer la zone avec tous les voisins se situant dans la dimension et le sens du dernier Split. L optimisation est illustrée sur la Figure 3.3. L implémentation de l algorithme de Merge n étant pas des plus simples, nous avons réalisé une application graphique permettant de visualiser l algorithme. Un aperçu écran est visible sur la Figure 3.4. Lookup L algorithme de Lookup permet de trouver un pair sur le réseau. Nos différentes actions se faisant par messages, il faut pouvoir router le message de pair en pair jusqu à trouver celui gérant les coordonnées cherchées. Afin d éviter à avoir à tester le type des messages à traiter, nous avons utilisé dans l implémentation le patron de conception Double Dispatch. 21
23 Figure 3.4 Aperçu écran de l application permettant de visualiser l algorithme de Merge dans CAN 22
24 Double Dispatch est un concept permettant d envoyer un appel de méthode différent selon le type de l objet courant. Cela consiste simplement à appeler la méthode nécessaire par l intermédiaire de l objet courant. Dans notre cas, cette technique est utilisée pour le traitement des requêtes contenues dans les messages de communication. En effet, chacun des types de message est pourvu d une méthode ResponseMessage handle(message), qui est chargée d appeler la bonne méthode à exécuter par le pair concerné. Cela nous permet de simplifier l exécution des requêtes par l appel d une unique méthode qui se chargera par la suite de réaliser le traitement qu elle suggère; tout en évitant à avoir à tester le type du message reçu pour le traiter. Par exemple, les deux messages permettant de joindre ou de quitter le réseau n attendent pas le même résultat, mais, après l appel de la méthode handle(message) sur le message, le traitement souhaité sera tout de même celui attendu, rejoindre ou quitter le réseau. 3.3 Déploiement Afin de mettre en pratique ce que nous avons appris sur ProActive et le déploiement GCM, avant de commencer la conception de la librairie, nous avons réalisé une application permettant de démarrer beaucoup d objets actifs sur plusieurs nœuds (en utilisant les vingt machines à huit cœurs chacune, disponibles à l INRIA sous le nom de eon1 à eon20). Au final, nous avons réalisé un programme simple qui démarre plusieurs machines virtuelles Java et plusieurs objets actifs afin de tester le déploiement à grande échelle. Cette application a ensuite été réutilisée et étendue afin de pouvoir valider l implémentation de notre librairie à grande échelle. La Figure 3.5 illustre le répartition et les références entres les objets déployés après le lancement de l application réalisée sous IC2D Interactive Control and Debugging of Distribution (IC2D) permet de monitorer des objets actifs déployés sur diverses machines. 23
25 Figure 3.5 Déploiement d un réseau CAN avec 5 pairs sous IC2D 24
26 Chapitre 4 Gestion de projet 4.1 Environnement de travail Dans le cadre du projet et afin d éviter des conflits liés à la configuration propre à chacun, nous avons décidé d avoir un environnement de programmation commun. Cela nous permet, ainsi, de pouvoir nous entraider plus facilement en cas de problème Outils utilisés Voici les différents outils utilisés qui nous ont permis de mener à bien notre Travail d Étude et de Recherche : Langage de programmation : Java 6 Outil de développement : Eclipe Outil de documentation : JavaDoc et L A TEX Notation : UML Subversion La réalisation d un projet en groupe nécessite une organisation particulière. De ce fait, l utilisation d un système de gestion de versions afin de pouvoir travailler ensemble sur plusieurs fichiers est quasiment inévitable. Nous avons pour cela décidé d utiliser Subversion car nous savions tous l utiliser et cela nous permet, ainsi, d éviter l apprentissage d un outil plus évolué tel que Git. Une branche nous a été créée sur le dépôt des sources de ProActive afin de pouvoir travailler avec la dernière version en date sans altérer le tronc principal. Subversion est un logiciel de gestion de sources et de contrôle de versions. Ce type de programme a plusieurs fonctions, notamment de : garder un historique des différentes versions des fichiers d un projet; permettre le retour à une version antérieure quelconque; garder un historique des modifications avec leur nature, leur date, leur auteur...; permettre un accès souple à ces fichiers, en local ou via un réseau; 25
27 permettre à des utilisateurs distincts et souvent distants de travailler ensemble sur les mêmes fichiers Wiki Un Wiki a également été mis en ligne afin d y référencer les divers articles étudiés, y lister les différentes tâches à réaliser au fil du temps, écrire des notes pour l élaboration du rapport final, etc. mais aussi pour que notre encadrant puisse suivre l évolution de notre projet. 4.2 Gestion de risque Le risque est inhérent à tous les projets. Cela désigne une condition ou un événement incertain qui, lorsqu il se produit, a un effet négatif sur les objectifs du projet et bien souvent une incidence sur l échéancier du projet. Nous savions que cela pourrait se produit notamment dû au fait que nous ayons dû nous familiariser avec la librairie ProActive et que nous risquions de rencontrer certains problèmes lors de son utilisation car nous manquions encore d expérience. Nous avons donc décidé qu en cas de retard, nous implémenterions uniquement le protocole CAN et pas le protocole Chord. Notre conception devrait permettre de le faire aisément par la suite. 4.3 Moyens de contrôle Nous avons globalement essayé de suivre le modèle de Cycle en V 1 qui permet, en cas d anomalie, de limiter un retour aux étapes précédentes. En parallèle de l implémentation une série de tests à l aide de Junit4 a donc été réalisée. Cela permet un contrôle de la qualité du projet tout en servant également de tests de non-régression. Ainsi en cas de problème si les tests couvrent une partie suffisamment large de l application comme ce fût notre cas, ils permettent souvent de mettre en évidence les parties à corriger en cas de bogue. Afin de permettre une réutilisation du code, nous avons été très attentif durant tout le projet sur la nécessité d avoir des commentaires bien structurés et suffisamment explicatifs. Cela nous a permis de générer une JavaDoc complète permettant à quiconque devant reprendre notre travail, de comprendre ce qui a été fait. 1. Le cycle en V est devenu un standard de l Industrie logicielle depuis les années 1980 et depuis l apparition de l Ingénierie des Systèmes est devenu un standard conceptuel dans tous les domaines de l Industrie. Le monde du logiciel ayant de fait pris un peu d avance en termes de maturité, on trouvera dans la bibliographie courante souvent des références au monde du logiciel qui pourront s appliquer au système. Les différentes étapes consiste dans l ordre en l Analyse des besoins et faisabilité, à la Spécification logicielle, à la Conception architecturale, à la Conception détaillée, au Codage, aux Tests unitaires, Tests d intégrations, Tests de validations et à la Vérification d Aptitude au Bon Fonctionnement. 26
28 A mi-parcours, nous avons également présenté notre projet ainsi que son évolution et nos divers problèmes à l équipe Oasis de l Inria Méditerranée. Cela nous a permis d avoir des retours forts intéressants et donc d effectuer en conséquence, certaines modifications. 4.4 Répartition des tâches Notre travail d étude et de recherche a été réalisé à temps plein durant un peu plus de 9 semaines consécutives. Voici ci-dessous une approximation du pourcentage des tâches accomplies par chacun des membres du projet : Liste des tâches F. Kilanga Nyembo L. Pellegrino A. Trovato Gestion de projet 0% 100% 0% Apprentissage ProActive 34% 33% 33% Etude articles 40% 30% 30% Conception UML 33% 33% 34% Implémentation Java 20% 40% 40% Tests unitaires 50% 25% 25% Rapport final 33% 34% 33% Afin de pénaliser personne nous avons essayé de nous partager ces tâches pour que ce ne soit pas toujours la même personne qui travaille sur la même partie. C est pour cette raison que le tableau récapitulatif ci-dessus présente une répartition assez équivalente du travail effectué sur certaines tâches. Concernant l implémentation, lorsque nous l avons pu, nous n avons pas hésité à appliquer la méthodologie «extrême programming» consistant à ce qu une personne écrive le code tandis qu une seconde vérifie en temps réel ce qui est écrit afin de déceler au plus vite, certaines parties du code qui pourraient être boguées, tout en alternant régulièrement les places entre les deux personnes appliquant cette méthode. 27
29 Chapitre 5 Conclusion Travailler sur ce projet a été une aventure passionnante. Elle nous a permis de nous familiariser avec l univers de la programmation distribuée en nous intéressant à l utilisation et au fonctionnement de ProActive. C est une bibliothèque qui nous étonne, de jour en jours par son étendue et ses capacités d abstraction. De façon globale, nous nous sommes approchés des objectifs demandés même si certains points n ont pas pu être réalisés comme l implémentation du protocole Chord. Notre encadrant nous a fait part du fait que notre implémentation serait réutilisée dans le cadre du projet SOA4ALL consistant à utiliser des réseaux pair-à-pair (notamment CAN et Chord) afin de fournir un service de haut niveau permettant de stocker à grande échelle une quantité importante de données pouvant être retrouvées suivant certains mécanismes de requêtes. Il devrait être aisé d implémenter le protocole Chord manquant en héritant de la classe abstraite StructuredOverlay et en implémentant les messages d action spécifiques. 28
30 Bibliographie [ABRR05] Brian Amedro, Vladimir Bodnartchouk, Judicaël Ribault, and Vincent Robitzer. Evaluation et optimisation des benchmarks paralleles de la nasa (npb) avec la bibliotheque proactive, [LJZ + 07] [Pro99] [Rat02] Ruqian Lu, Caiyan Jia, Shaofang Zhang, Lusheng Chen, and Hongyu Zhang. An exact data mining method for finding center string, April ProActive. INRIA, http ://proactive.inria.fr. Sylvia Ratnasamy. A Scalable Content-Addressable Network. PhD thesis, University of California at Berkeley, [RFH + 01] Sylvia Ratnasamy, Paul Francis, Mark Handley, Richard Karp, and Scott Shenker. A scalable content-adressable network, [SMK + 01] Ion Stoica, Robert Morris, David Karger, M.Frans Kaashoe, and Hari Balakrishnan. Chord : A scalable peer-to-peer lookup service for internet applications, [Wik] Wikipedia. Gnutella. http ://fr.wikipedia.org/wiki/gnutella. 29
Évaluation d une architecture de stockage RDF distribuée
Évaluation d une architecture de stockage RDF distribuée Maeva Antoine 1, Françoise Baude 1, Fabrice Huet 1 1 INRIA MÉDITERRANÉE (ÉQUIPE OASIS), UNIVERSITÉ NICE SOPHIA-ANTIPOLIS, I3S CNRS pré[email protected]
Projet Active Object
Projet Active Object TAO Livrable de conception et validation Romain GAIDIER Enseignant : M. Noël PLOUZEAU, ISTIC / IRISA Pierre-François LEFRANC Master 2 Informatique parcours MIAGE Méthodes Informatiques
Évaluation et implémentation des langages
Évaluation et implémentation des langages Les langages de programmation et le processus de programmation Critères de conception et d évaluation des langages de programmation Les fondations de l implémentation
Jade. Projet Intelligence Artificielle «Devine à quoi je pense»
Jade Projet Intelligence Artificielle «Devine à quoi je pense» Réalisé par Djénéba Djikiné, Alexandre Bernard et Julien Lafont EPSI CSII2-2011 TABLE DES MATIÈRES 1. Analyse du besoin a. Cahier des charges
Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique
Institut Supérieure Aux Etudes Technologiques De Nabeul Département Informatique Support de Programmation Java Préparé par Mlle Imene Sghaier 2006-2007 Chapitre 1 Introduction au langage de programmation
Métriques de performance pour les algorithmes et programmes parallèles
Métriques de performance pour les algorithmes et programmes parallèles 11 18 nov. 2002 Cette section est basée tout d abord sur la référence suivante (manuel suggéré mais non obligatoire) : R. Miller and
Réplication adaptative sur les réseaux P2P
Réplication adaptative sur les réseaux pair à pair 10 mars 2006 1 Introduction 2 Réseaux pair à pair et tables de hachage distribuées 3 Le protocole app-cache 4 Le protocole LAR 5 Tests de performance
CORBA haute performance
CORBA haute performance «CORBA à 730Mb/s!» Alexandre DENIS PARIS/IRISA, Rennes [email protected] Plan Motivations : concept de grille de calcul CORBA : concepts fondamentaux Vers un ORB haute performance
Chapitre VI- La validation de la composition.
Chapitre VI- La validation de la composition. Objectifs du chapitre : Expliquer les conséquences de l utilisation de règles de typage souples dans SEP. Présenter le mécanisme de validation des connexions
PG208, Projet n 3 : Serveur HTTP évolué
PG208, Projet n 3 : Serveur HTTP évolué Bertrand LE GAL, Serge BOUTER et Clément VUCHENER Filière électronique 2 eme année - Année universitaire 2011-2012 1 Introduction 1.1 Objectif du projet L objectif
MATRICE DES FONCTIONNALITES
Facilité d utilisation Nouveau! Convivialité d Outlook Nouveau! Smart Technician Client Assistant Installation Configuration instantanée et personnalisable Nouveau! Installation à distance de Technician
Manuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2
éducalgo Manuel d utilisation 26 juin 2011 Table des matières 1 Tâche à effectuer : écrire un algorithme 2 2 Comment écrire un algorithme? 3 2.1 Avec quoi écrit-on? Avec les boutons d écriture........
Business Process Execution Language
Business Process Execution Language Rapport du projet de systèmes distribués d information Markus Lindström 6 mai 2009 Motivation personnelle Le sujet que j ai retenu et présenté dans le cadre du cours
Julien MATHEVET Alexandre BOISSY GSID 4. Rapport RE09. Load Balancing et migration
Julien MATHEVET Alexandre BOISSY GSID 4 Rapport Load Balancing et migration Printemps 2001 SOMMAIRE INTRODUCTION... 3 SYNTHESE CONCERNANT LE LOAD BALANCING ET LA MIGRATION... 4 POURQUOI FAIRE DU LOAD BALANCING?...
Cloud public d Ikoula Documentation de prise en main 2.0
Cloud public d Ikoula Documentation de prise en main 2.0 PREMIERS PAS AVEC LE CLOUD PUBLIC D IKOULA Déployez vos premières instances depuis l interface web ou grâce à l API. V2.0 Mai 2015 Siège Social
NOTIONS DE RESEAUX INFORMATIQUES
NOTIONS DE RESEAUX INFORMATIQUES GENERALITES Définition d'un réseau Un réseau informatique est un ensemble d'équipements reliés entre eux afin de partager des données, des ressources et d'échanger des
Sauvegarde collaborative entre pairs Ludovic Courtès LAAS-CNRS
Sauvegarde collaborative entre pairs 1 Sauvegarde collaborative entre pairs Ludovic Courtès LAAS-CNRS Sauvegarde collaborative entre pairs 2 Introduction Pourquoi pair à pair? Utilisation de ressources
4. Utilisation d un SGBD : le langage SQL. 5. Normalisation
Base de données S. Lèbre [email protected] Université de Strasbourg, département d informatique. Présentation du module Contenu général Notion de bases de données Fondements / Conception Utilisation :
INTERSYSTEMS CACHÉ COMME ALTERNATIVE AUX BASES DE DONNÉES RÉSIDENTES EN MÉMOIRE
I N T E RS Y S T E M S INTERSYSTEMS CACHÉ COMME ALTERNATIVE AUX BASES DE DONNÉES RÉSIDENTES EN MÉMOIRE David Kaaret InterSystems Corporation INTERSySTEMS CAChé CoMME ALTERNATIvE AUx BASES de données RéSIdENTES
Plateforme de capture et d analyse de sites Web AspirWeb
Projet Java ESIAL 2A 2009-2010 Plateforme de capture et d analyse de sites Web AspirWeb 1. Contexte Ce projet de deuxième année permet d approfondir par la pratique les méthodes et techniques acquises
Information utiles. [email protected]. webpage : Google+ : http://www.ibisc.univ-evry.fr/ digiusto/
Systèmes de gestion de bases de données Introduction Université d Evry Val d Essonne, IBISC utiles email : [email protected] webpage : http://www.ibisc.univ-evry.fr/ digiusto/ Google+ : https://plus.google.com/u/0/b/103572780965897723237/
Solutions de gestion de la sécurité Livre blanc
Solutions de gestion de la sécurité Livre blanc L intégration de la gestion des identités et des accès avec l authentification unique Objectif : Renforcer la politique de sécurité et améliorer la productivité
Patrons de Conception (Design Patterns)
Patrons de Conception (Design Patterns) Introduction 1 Motivation Il est difficile de développer des logiciels efficaces, robustes, extensibles et réutilisables Il est essentiel de comprendre les techniques
Rapport d activité. Mathieu Souchaud Juin 2007
Rapport d activité Mathieu Souchaud Juin 2007 Ce document fait la synthèse des réalisations accomplies durant les sept premiers mois de ma mission (de novembre 2006 à juin 2007) au sein de l équipe ScAlApplix
Architecture d un service de partage de données modifiables sur une infrastructure pair-à-pair
Architecture d un service de partage de données modifiables sur une infrastructure pair-à-pair Mathieu Jan [email protected] Superviseurs : Gabriel Antoniu, Luc Bougé, Thierry Priol {Gabriel.Antoniu,Luc.Bouge,Thierry.Priol}@irisa.fr
basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB www.enseirb.fr/~legal Olivier Augereau Formation UML
basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB www.enseirb.fr/~legal Olivier Augereau Formation UML http://olivier-augereau.com Sommaire Introduction I) Les bases II) Les diagrammes
Mise en œuvre des serveurs d application
Nancy-Université Mise en œuvre des serveurs d application UE 203d Master 1 IST-IE Printemps 2008 Master 1 IST-IE : Mise en œuvre des serveurs d application 1/54 Ces transparents, ainsi que les énoncés
Urbanisation des SI. Des composants technologiques disponibles. Urbanisation des Systèmes d'information Henry Boccon Gibod 1
Urbanisation des SI Des composants technologiques disponibles Urbanisation des Systèmes d'information Henry Boccon Gibod 1 Plan de l'exposé Technologies à la mode disponibles. Bus de données, ETL et EAI
DG-ADAJ: Une plateforme Desktop Grid
DG-ADAJ: Une plateforme pour Desktop Grid Olejnik Richard, Bernard Toursel Université des Sciences et Technologies de Lille Laboratoire d Informatique Fondamentale de Lille (LIFL UMR CNRS 8022) Bât M3
Pair-à-Pair: Architectures et Services
Pair-à-Pair: Architectures et Services Fabrice Le Fessant [email protected] Équipe ASAP (Réseaux très large échelle) INRIA Saclay Île de France Octobre 2008 Fabrice Le Fessant () Architectures
Messagerie asynchrone et Services Web
Article Messagerie asynchrone et Services Web 1 / 10 Messagerie asynchrone et Services Web SOAP, WSDL SONT DES STANDARDS EMERGEANT DES SERVICES WEB, LES IMPLEMENTATIONS DE CEUX-CI SONT ENCORE EN COURS
NFP111 Systèmes et Applications Réparties
NFP111 Systèmes et Applications Réparties 1 de 34 NFP111 Systèmes et Applications Réparties Cours 7 - CORBA/Partie 1 Claude Duvallet Université du Havre UFR Sciences et Techniques 25 rue Philippe Lebon
DHCP et NAT. Cyril Rabat [email protected]. Master 2 ASR - Info09115 - Architecture des réseaux d entreprise 2012-2013
DHCP et NAT Cyril Rabat [email protected] Master 2 ASR - Info09115 - Architecture des réseaux d entreprise 22-23 Cours n 9 Présentation des protocoles BOOTP et DHCP Présentation du NAT Version
Mettre en place un accès sécurisé à travers Internet
Mettre en place un accès sécurisé à travers Internet Dans cette partie vous verrez comment configurer votre serveur en tant que serveur d accès distant. Dans un premier temps, les méthodes pour configurer
Cours Bases de données
Informations sur le cours Cours Bases de données 9 (10) séances de 3h Polycopié (Cours + TD/TP) 3 année (MISI) Antoine Cornuéjols www.lri.fr/~antoine [email protected] Transparents Disponibles
Bien programmer. en Java 7. 10 000 ex. couleur. Avec plus de 50 études de cas et des comparaisons avec C++ et C# Emmanuel Puybaret.
Bien programmer en Java 7 Avec plus de 50 études de cas et des comparaisons avec C++ et C# Plus de 10 000 ex. vendus! Édition en couleur Emmanuel Puybaret, ISBN : 978-2-212-12974-8 chapitre1 Présentation
Architecture N-Tier. Ces données peuvent être saisies interactivement via l interface ou lues depuis un disque. Application
Architecture Multi-Tier Traditionnellement une application informatique est un programme exécutable sur une machine qui représente la logique de traitement des données manipulées par l application. Ces
Plan du cours. Autres modèles pour les applications réparties Introduction. Mode de travail. Introduction
Plan du cours Autres modèles pour les applications réparties Introduction [email protected] http://rangiroa.polytech.unice.fr Notre terrain de jeu : les systèmes répartis Un rappel : le modèle dominant
REALISATION d'un. ORDONNANCEUR à ECHEANCES
REALISATION d'un ORDONNANCEUR à ECHEANCES I- PRÉSENTATION... 3 II. DESCRIPTION DU NOYAU ORIGINEL... 4 II.1- ARCHITECTURE... 4 II.2 - SERVICES... 4 III. IMPLÉMENTATION DE L'ORDONNANCEUR À ÉCHÉANCES... 6
Entraînement au concours ACM-ICPC
Entraînement au concours ACM-ICPC Concours ACM-ICPC : format et stratégies Page 1 / 16 Plan Présentation Stratégies de base Page 2 / 16 Qu est-ce que c est? ACM-ICPC : International Collegiate Programming
Réseaux grande distance
Chapitre 5 Réseaux grande distance 5.1 Définition Les réseaux à grande distance (WAN) reposent sur une infrastructure très étendue, nécessitant des investissements très lourds. Contrairement aux réseaux
Procédure pas à pas de découverte de l offre. Service Cloud Cloudwatt
Procédure pas à pas de découverte de l offre Service Cloud Cloudwatt Manuel Utilisateur 03/07/2014 Cloudwatt - Reproduction et communication sont interdites sans autorisation 1/45 Contenu 1. Introduction...
Vérifier la qualité de vos applications logicielle de manière continue
IBM Software Group Vérifier la qualité de vos applications logicielle de manière continue Arnaud Bouzy Kamel Moulaoui 2004 IBM Corporation Agenda Analyse de code Test Fonctionnel Test de Performance Questions
Arithmétique binaire. Chapitre. 5.1 Notions. 5.1.1 Bit. 5.1.2 Mot
Chapitre 5 Arithmétique binaire L es codes sont manipulés au quotidien sans qu on s en rende compte, et leur compréhension est quasi instinctive. Le seul fait de lire fait appel au codage alphabétique,
SECTION 5 BANQUE DE PROJETS
SECTION 5 BANQUE DE PROJETS INF 4018 BANQUE DE PROJETS - 1 - Banque de projets PROJET 2.1 : APPLICATION LOGICIELLE... 3 PROJET 2.2 : SITE WEB SÉMANTIQUE AVEC XML... 5 PROJET 2.3 : E-LEARNING ET FORMATION
Manuel de System Monitor
Chris Schlaeger John Tapsell Chris Schlaeger Tobias Koenig Traduction française : Yves Dessertine Traduction française : Philippe Guilbert Traduction française : Robin Guitton Relecture de la documentation
PROGRAMME DU CONCOURS DE RÉDACTEUR INFORMATICIEN
PROGRAMME DU CONCOURS DE RÉDACTEUR INFORMATICIEN 1. DÉVELOPPEMENT D'APPLICATION (CONCEPTEUR ANALYSTE) 1.1 ARCHITECTURE MATÉRIELLE DU SYSTÈME INFORMATIQUE 1.1.1 Architecture d'un ordinateur Processeur,
Cours n 12. Technologies WAN 2nd partie
Cours n 12 Technologies WAN 2nd partie 1 Sommaire Aperçu des technologies WAN Technologies WAN Conception d un WAN 2 Lignes Louées Lorsque des connexions dédiées permanentes sont nécessaires, des lignes
WEA Un Gérant d'objets Persistants pour des environnements distribués
Thèse de Doctorat de l'université P & M Curie WEA Un Gérant d'objets Persistants pour des environnements distribués Didier Donsez Université Pierre et Marie Curie Paris VI Laboratoire de Méthodologie et
Paiement sécurisé sur Internet. Tableau de bord Commerçant
Paiement sécurisé sur Internet Tableau de bord Commerçant SOMMAIRE 1 Principe 4 1.1 Principe général 4 1.2 Environnement de validation 4 1.3 Environnement de Production 4 2 Accès au tableau de bord 5 2.1
Créer et partager des fichiers
Créer et partager des fichiers Le rôle Services de fichiers... 246 Les autorisations de fichiers NTFS... 255 Recherche de comptes d utilisateurs et d ordinateurs dans Active Directory... 262 Délégation
Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application
Université de Provence Licence Math-Info Première Année V. Phan Luong Algorithmique et Programmation en Python Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application 1 Ordinateur Un
Chapitre 1 : Introduction aux bases de données
Chapitre 1 : Introduction aux bases de données Les Bases de Données occupent aujourd'hui une place de plus en plus importante dans les systèmes informatiques. Les Systèmes de Gestion de Bases de Données
10 tâches d administration simplifiées grâce à Windows Server 2008 R2. 1. Migration des systèmes virtuels sans interruption de service
10 tâches d administration simplifiées grâce à Windows Server 2008 R2 Faire plus avec moins. C est l obsession depuis plusieurs années de tous les administrateurs de serveurs mais cette quête prend encore
Présentation du PL/SQL
I Présentation du PL/ Copyright Oracle Corporation, 1998. All rights reserved. Objectifs du Cours A la fin de ce chapitre, vous saurez : Décrire l intéret du PL/ Décrire l utilisation du PL/ pour le développeur
Master CCI. Compétences Complémentaires en Informatique. Livret de l étudiant
Master CCI Compétences Complémentaires en Informatique Livret de l étudiant 2014 2015 Master CCI Le Master CCI (Compétences Complémentaires en Informatique) permet à des étudiants de niveau M1 ou M2 dans
Programmation parallèle et distribuée (Master 1 Info 2015-2016)
Programmation parallèle et distribuée (Master 1 Info 2015-2016) Hadoop MapReduce et HDFS Note bibliographique : ce cours est largement inspiré par le cours de Benjamin Renaut (Tokidev SAS) Introduction
D une part, elles ne peuvent faire table rase de la richesse contenue dans leur système d information.
PACBASE «Interrogez le passé, il répondra présent.». Le Module e-business Les entreprises doivent aujourd hui relever un triple défi. D une part, elles ne peuvent faire table rase de la richesse contenue
Système de vidéosurveillance Guide de configuration
Guide de configuration Introduction Les technologies de vidéosurveillance ne sont plus considérées comme «nouvelles» de nos jours, puisque l on enregistre et archive des vidéos depuis maintenant de nombreuses
Serveurs de noms Protocoles HTTP et FTP
Nils Schaefer Théorie des réseaux (EC3a) Serveurs de noms Protocoles HTTP et FTP Théorie des réseaux (EC3a) Séance 7 Pourquoi DNS? Internet est une structure hiérarchique et arborescente de réseaux et
Poker. A rendre pour le 25 avril
Poker A rendre pour le 25 avril 0 Avant propos 0.1 Notation Les parties sans * sont obligatoires (ne rendez pas un projet qui ne contient pas toutes les fonctions sans *). Celles avec (*) sont moins faciles
INF 1250 INTRODUCTION AUX BASES DE DONNÉES. Guide d étude
INF 1250 INTRODUCTION AUX BASES DE DONNÉES Guide d étude Sous la direction de Olga Mariño Télé-université Montréal (Québec) 2011 INF 1250 Introduction aux bases de données 2 INTRODUCTION Le Guide d étude
Windows Internet Name Service (WINS)
Windows Internet Name Service (WINS) WINDOWS INTERNET NAME SERVICE (WINS)...2 1.) Introduction au Service de nom Internet Windows (WINS)...2 1.1) Les Noms NetBIOS...2 1.2) Le processus de résolution WINS...2
3A-IIC - Parallélisme & Grid GRID : Définitions. GRID : Définitions. Stéphane Vialle. [email protected] http://www.metz.supelec.
3A-IIC - Parallélisme & Grid Stéphane Vialle [email protected] http://www.metz.supelec.fr/~vialle Principes et Objectifs Evolution Leçons du passé Composition d une Grille Exemple d utilisation
Glossaire. www.themanualpage.org ( themanualpage.org) soumises à la licence GNU FDL.
Glossaire Ce glossaire contient les termes techniques et de spécialité les plus employés dans cette thèse. Il emprunte, pour certaines d entre elles, les définitions proposées par www.themanualpage.org
1.Introduction - Modèle en couches - OSI TCP/IP
1.Introduction - Modèle en couches - OSI TCP/IP 1.1 Introduction 1.2 Modèle en couches 1.3 Le modèle OSI 1.4 L architecture TCP/IP 1.1 Introduction Réseau Télécom - Téléinformatique? Réseau : Ensemble
Chapitre 11 : Le Multicast sur IP
1 Chapitre 11 : Le Multicast sur IP 2 Le multicast, Pourquoi? Multicast vs Unicast 3 Réseau 1 Serveur vidéo Réseau 2 Multicast vs Broadcast 4 Réseau 1 Serveur vidéo Réseau 2 Multicast 5 Réseau 1 Serveur
Conception des systèmes répartis
Conception des systèmes répartis Principes et concepts Gérard Padiou Département Informatique et Mathématiques appliquées ENSEEIHT Octobre 2012 Gérard Padiou Conception des systèmes répartis 1 / 37 plan
Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles
Types d applications pour la persistance Université de Nice Sophia-Antipolis Version 0.9 28/8/07 Richard Grin Toutes les applications n ont pas une complexité qui nécessite une architecture n- tiers Ce
HelpDesk. Sept avantages de HelpDesk
HelpDesk Artologik HelpDesk est l outil rêvé pour ceux qui recherchent un programme de support et de gestion des tickets alliant facilité d utilisation et puissance. Avec Artologik HelpDesk, vous pourrez
Plan du Travail. 2014/2015 Cours TIC - 1ère année MI 30
Plan du Travail Chapitre 1: Internet et le Web : Définitions et historique Chapitre 2: Principes d Internet Chapitre 3 : Principaux services d Internet Chapitre 4 : Introduction au langage HTML 2014/2015
White Paper - Livre Blanc
White Paper - Livre Blanc Développement d applications de supervision des systèmes d information Avec LoriotPro Vous disposez d un environnement informatique hétérogène et vous souhaitez à partir d une
Cahier des charges (CDC)
Cahier des charges (CDC) PTella Auteur Arnaud Aucher - Ecole Centrale Groupe PT1 3 Nom du document Version 3 Page 1 / 5 Sommaire Sommaire... 2 Présentation générale du projet... 3 1. Descriptif du projet...
Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <[email protected]> Centrale Réseaux
Formation Webase 5 Ses secrets, de l architecture MVC à l application Web Adrien Grand Centrale Réseaux Sommaire 1 Obtenir des informations sur Webase 5 2 Composants de Webase 5 Un
Les Architectures Orientées Services (SOA)
Les Architectures Orientées Services (SOA) Ulrich Duvent Guillaume Ansel Université du Littoral Côte d Opale 50, Rue Ferdinand Buisson BP 699 62228 Calais Cedex Téléphone (33) 03.21.46.36.92 Télécopie
La plate-forme DIMA. Master 1 IMA COLI23 - Université de La Rochelle
La plate-forme DIMA Master 1 IMA COLI23 - Université de La Rochelle DIMA Bref aperçu Qu'est-ce? Acronyme de «Développement et Implémentation de Systèmes Multi-Agents» Initié par Zahia Guessoum et Jean-Pierre
Guide d implémentation. Réussir l intégration de Systempay
Guide d implémentation - Interface avec la plateforme de paiement - Réussir l intégration de Systempay Version 1.4b Rédaction, Vérification, Approbation Rédaction Vérification Approbation Nom Date/Visa
24/11/2011. Cours EJB/J2EE Copyright Michel Buffa. Plan du cours. EJB : les fondamentaux. Enterprise Java Bean. Enterprise Java Bean.
Plan du cours 2 Introduction générale : fondamentaux : les fondamentaux Michel Buffa ([email protected]), UNSA 2002, modifié par Richard Grin (version 1.1, 21/11/11), avec emprunts aux supports de Maxime
Remote Method Invocation en Java (RMI)
Remote Method Invocation en Java (RMI) Modélisation et construction des applications réparties (Module M-4102C) J. Christian Attiogbé Fevrier 2015 J. Christian Attiogbé (Fevrier 2015) Remote Method Invocation
Cours en ligne Développement Java pour le web
Cours en ligne Développement Java pour le web We TrainFrance info@wetrainfrance Programme général du cours Développement Java pour le web Module 1 - Programmation J2ee A) Bases de programmation Java Unité
1. Introduction à la distribution des traitements et des données
2A SI 1 - Introduction aux SI, et à la distribution des traitements et des données Stéphane Vialle [email protected] http://www.metz.supelec.fr/~vialle Support de cours élaboré avec l aide de
Chapitre VII : Principes des réseaux. Structure des réseaux Types de réseaux La communication Les protocoles de communication
Chapitre VII : Principes des réseaux Structure des réseaux Types de réseaux La communication Les protocoles de communication Introduction Un système réparti est une collection de processeurs (ou machines)
SQL Server Installation Center et SQL Server Management Studio
SQL Server Installation Center et SQL Server Management Studio Version 1.0 Grégory CASANOVA 2 SQL Server Installation Center et SQL Server Management Studio [03/07/09] Sommaire 1 Installation de SQL Server
Ebauche Rapport finale
Ebauche Rapport finale Sommaire : 1 - Introduction au C.D.N. 2 - Définition de la problématique 3 - Etat de l'art : Présentatio de 3 Topologies streaming p2p 1) INTRODUCTION au C.D.N. La croissance rapide
Bien architecturer une application REST
Olivier Gutknecht Bien architecturer une application REST Avec la contribution de Jean Zundel Ce livre traite exactement du sujet suivant : comment faire pour que les services web et les programmes qui
RAPPORT DE CONCEPTION UML :
Carlo Abi Chahine Sylvain Archenault Yves Houpert Martine Wang RAPPORT DE CONCEPTION UML : Bamboo Ch@t Projet GM4 Juin 2006 Table des matières 1 Introduction 2 2 Présentation du logiciel 3 2.1 Précisions
Outils de développement collaboratif
Outils de développement collaboratif Envol 2012 Olivier Thauvin 24 janvier 2013 Olivier Thauvin Outils de développement collaboratif 24 janvier 2013 1 / 80 1 Avant Propos 2 Versionner 3 Communiquer 4 Documenter
Unitt www.unitt.com. Zero Data Loss Service (ZDLS) La meilleure arme contre la perte de données
Zero Data Loss Service (ZDLS) La meilleure arme contre la perte de données La meilleure protection pour les données vitales de votre entreprise Autrefois, protéger ses données de manière optimale coûtait
Algorithmique et langages du Web
Cours de Algorithmique et langages du Web Jean-Yves Ramel Licence 1 Peip Biologie Groupe 7 & 8 Durée totale de l enseignement = 46h [email protected] Bureau 206 DI PolytechTours Organisation de la partie
Gestion distribuée (par sockets) de banque en Java
Gestion distribuée (par sockets) de banque en Java Université Paris Sud Rappel sur la solution locale de gestion simple de banque L objet de cet exercice était de créer une application java qui implante
Plateforme PAYZEN. Intégration du module de paiement pour la plateforme Magento version 1.3.x.x. Paiement en plusieurs fois. Version 1.
Plateforme PAYZEN Intégration du module de paiement pour la plateforme Magento version 1.3.x.x Paiement en plusieurs fois Version 1.4a Guide d intégration du module de paiement Multiple Magento 1/24 SUIVI,
Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)
Quelques patterns pour la persistance des objets avec DAO Ce cours présente des modèles de conception utilisés pour effectuer la persistance des objets Université de Nice Sophia-Antipolis Version 1.4 30/8/07
Ingénérie logicielle dirigée par les modèles
Ingénérie logicielle dirigée par les modèles Destercq Lionel & Dubuc Xavier 17 décembre 2009 Table des matières 1 Introduction 1 2 Diagrammes de classes 1 2.1 Principal..............................................
Manuel d utilisation de la plate-forme de gestion de parc UCOPIA. La mobilité à la hauteur des exigences professionnelles
Manuel d utilisation de la plate-forme de gestion de parc UCOPIA La mobilité à la hauteur des exigences professionnelles 2 Manuel d utilisation de la plate-forme de gestion de parc UCOPIA 1 Table des matières
Firewall IDS Architecture. Assurer le contrôle des connexions au. [email protected] Sécurité 1
Sécurité Firewall IDS Architecture sécurisée d un réseau Assurer le contrôle des connexions au réseau [email protected] Sécurité 1 Sommaire général Mise en oeuvre d une politique de sécurité
Guide plateforme FOAD ESJ Lille
Guide plateforme FOAD ESJ Lille v. 1.2 «étudiants» septembre 2014 Réalisé par Maxime Duthoit Ingénieur pédagogique multimédia à l ESJ Lille Sommaire Introduction... 1 1. Accueil et connexion... 2 2. Accueil
Chapitre I Notions de base et outils de travail
Chapitre I Notions de base et outils de travail Objectifs Connaître les principes fondateurs et l historique du langage Java S informer des principales caractéristiques du langage Java Connaître l environnement
Le génie logiciel. maintenance de logiciels.
Le génie logiciel Définition de l IEEE (IEEE 1990): L application d une approche systématique, disciplinée et quantifiable pour le développement, l opération et la maintenance de logiciels. Introduction
Diagrammes de Package, de déploiement et de composants UML
labsticc.univ-brest.fr/pages_perso/babau/ Diagrammes de Package, de déploiement et de composants UML Jean-Philippe Babau Département Informatique, UFR Sciences, Laboratoire Lab-STICC 2 1 Plan Description
DUT Informatique Module Système S4 C Département Informatique 2009 / 2010. Travaux Pratiques n o 5 : Sockets Stream
iut ORSAY DUT Informatique Département Informatique 2009 / 2010 Travaux Pratiques n o 5 : Sockets Stream Nom(s) : Groupe : Date : Objectifs : manipuler les primitives relatives à la communication par sockets
