• Aucun résultat trouvé

Trouver des ressources rares dans le système d’information

3.4 Synthèse

4.2.3 Trouver des ressources rares dans le système d’information

64 Le système d’information et l’allocation des ressources dans le système Vigne les informations découvertes sont diffusées à tous les voisins dans le réseau pair-à-pair non structuré du nœud initiateur de la découverte de ressources. Dans le cas où le nœud découvert a été alloué, deux traitements sont possibles :

– soit ce nœud avait été enregistré dans le cache à l’issue d’une réception de diffusion.

Dans ce cas, un message est envoyé au nœud qui avait initié cette diffusion pour lui demander d’avertir ses voisins de l’allocation de la ressource (cf. lignes 8 à 10) ;

– soit ce nœud provient d’une découverte de ressources par marche aléatoire ou alors d’une présence dans le cache non liée à une diffusion préalable, dans ce cas rien n’est fait puisqu’il n’est pas intéressant de faire connaître une ressource qui vient d’être allouée.

Algorithme 10Réception d’une information diffusée

1: procedureRECEPTIONINFORMATIONDIFFUSEE(in f osRessource) 2: ifin f osRessource/cachethen

3: A joutRessourceDansCache(in f osRessource) 4: else

5: MettreCacheAJour(in f osRessources) 6: end if

7: end procedure

La réception d’une information diffusée par un nœud est spécifiée dans l’algorithme 10. Si l’information sur la ressource n’est pas présente dans le cache, alors elle y est ajoutée, sinon elle est mise à jour.

Le système d’information de Vigne 65 grande échelle potentielle, il est peu probable qu’un fournisseur de ressource connaisse l’en-semble des ressources mises à disposition dans la grille. Un fournisseur ne peut donc pas éva-luer simplement la rareté des ressources qu’il fournit. Ainsi, nous souhaitons que cette opéra-tion soit réalisée automatiquement.

Nous proposons de faire une évaluation statistique de la rareté d’une ressource. Nous par-tons des hypothèses suivantes :

1. un type de ressource que l’on ne trouve pas facilement est considéré comme rare ; 2. une ressource qui peut fréquemment répondre de façon favorable aux requêtes de

dé-couverte de ressources (sans tenir compte de son état d’occupation) n’est pas considérée comme rare.

L’idée est que les nœuds qui composent la grille interrogent de façon aléatoire dans le réseau un ensemble de nœuds et comparent leurs ressources locales avec celles des nœuds interrogés. Si dans l’échantillon de nœuds interrogés, les ressources locales sont différentes des ressources des autres nœuds, la ressource locale peut être considérée comme rare. Compte-tenu de la volatilité des ressources composant la grille, ce traitement doit être effectué régulièrement.

Toutefois, si tous les nœuds du système effectuent de telles interrogations, une bande passante importante risque d’être consommée. D’après la seconde hypothèse que nous avons donnée, un certain nombre de nœuds peuvent être considérés comme possédant des ressources non rares dès lors qu’ils ont été capables de donner de nombreuses réponses positives aux requêtes de découverte de ressources. Il n’est donc pas nécessaire que ces ressources effectuent les interrogations statistiques, ce qui permet d’économiser de la bande passante.

L’algorithme 11 décrit comment un nœud détermine la rareté des ressources qu’il héberge.

Tout d’abord, le nœud évalue s’il a besoin ou non d’effectuer cette interrogation (cf. ligne 4).

Dans l’hypothèse où il en a besoin, il effectue des marches aléatoires pour trouverαressources de n’importe quel type (cf. ligne 7).αdoit être une fraction de la taille potentielle de la grille, typiquement 5 ou 10 %. La taille de la grille peut être déterminée approximativement ou encore avec des techniques comme [119] qui utilisent les marches aléatoires pour estimer la taille d’un réseau pair-à-pair non structuré et qui possèdent l’avantage de fournir une évaluation précise de la taille de la grille lorsque cette dernière varie dynamiquement. Une fois l’attente des réponses terminées (cf. lignes 8 à 11), le nœud évalue parmi les réponses le nombre de ressources qui sont similaires à celles qu’il propose (cf. lignes 12 à 16). Finalement, si la proportion de ressources similaires est inférieure à une valeurβ (typiquement 2 à 5 %), alors le nœud doit se faire connaître (cf. lignes 18). Si cette proportion est supérieure àβ alors le coefficient de rareté est diminué (cf.ligne. 20). Ce traitement est effectué toutes lesγminutes.

γdoit être adapté à la volatilité des ressources.

L’algorithme 8 doit être légèrement adapté pour que le coefficient de rareté des nœuds puisse être mis à jour. Le résultat de l’adaptation est montré dans l’algorithme 12. Il faut sim-plement diminuer le coefficient de rareté lorsque le nœud peut répondre à une requête de dé-couverte de ressources.

4.2.3.2 Faire connaître une ressource rare

Même si un nœud détermine qu’il héberge des ressources rares, cela ne suffit pas pour que cette ressource puisse être découverte plus simplement compte-tenu de l’architecture distribuée

66 Le système d’information et l’allocation des ressources dans le système Vigne

Algorithme 11Évaluation réalisée par un nœud pour savoir si ses ressources sont rares

1: procedureEVALUATIONRARETERESSOURCE

2: whilevraido

3: coe f f icientRaretecoe f f icientRarete×1,1 4: ifcoe f f icientRarete>1then

5: reponses/0

6: nbRessourcesSimilaires0

7: MarchesAleatoires(α,”toute ressource”)

8: while(|reponses|<α)∧ ¬(FinDuTempsDInterrogation())do 9: reponseAttendreReponse()

10: reponsesreponses∪ {reponse}

11: end while

12: for eachreponsereponsesdo

13: if(ComparerAvecRessourceLocale(reponse.caracteristiques)then 14: nbRessourcesSimilaires+ +

15: end if

16: end for each

17: if(nbRessourcesSimilaires/|reponses|)<βthen 18: FaireConnaitreRessourceLocale()

19: else

20: coe f f icientRaretecoe f f icientRarete/1.1

21: end if

22: end if

23: Dormir(γ) 24: end while 25: end procedure

Algorithme 12Réception d’une requête de découverte de ressources et mise à jour de la rareté des ressources

1: procedure RECEPTIONREQUETEDECOUVERTERESSOURCESAVECMAJRA

-RETE(caracteristiques,demandeur)

2: if(ComparerAvecRessourceLocale(caracteristiques)then 3: coe f f icientRaretecoe f f icientRarete/1.1

4: ifRessourceLocaleEstLibre(caracteristiques)then

5: ChangerEtatRessourceLocale(REPONSE_IMPOSSIBLE) 6: EnvoieReponse(demandeur,caracteristiquesLocales,charge)

7: end if

8: end if 9: end procedure

Le système d’information de Vigne 67 du système.

Afin de rendre plus visibles ces ressources, nous proposons de les faire connaître auprès d’un certain nombre de nœuds dans le système. Pour cela, il est encore possible d’utiliser des marches aléatoires, cette fois avec une profondeur importante pour diffuser l’information.

Ainsi, lorsqu’un nœud reçoit une information de ce type, il ne répond pas à l’émetteur comme lors d’une marche aléatoire classique mais enregistre cette information dans un cache. La durée de vie des informations sur les ressources rares n’a pas besoin d’être longue car nous avons vu dans l’algorithme 11 que les ressources évaluent leur rareté toutes lesγminutes. Une durée de vie légèrement supérieure àγminutes est donc suffisante.

Par la suite, lorsqu’un nœud, initiateur ou non, reçoit une requête de découverte de res-sources, il regarde dans son cache de ressources rares si un nœud peut convenir et dans ce cas il fait directement suivre cette requête de découverte de ressources vers le nœud considéré qui possède des ressources rares. Cela permet aux nœuds possédant des ressources rares d’être trouvés le pus rapidement possible.

Algorithme 13Diffusion d’une requête permettant de faire connaître une ressource rare

1: procedureFAIRECONNAITRERESSOURCELOCALE

2: noeudChoisirU nVoisinAuHasard()

3: EnvoiIn f ormationRessourceRare(caracteristiquesRessourceLocale,T T Ldepart) 4: end procedure

L’algorithme 13 décrit l’initiation d’une diffusion pour faire connaître une ressource rare.

Nous pouvons voir que le nœud hébergeant une ressource rare n’effectue qu’une émission de requête (cf. ligne 3) sans attendre de réponse. Il suffit en effet de lancer une seule marche aléa-toire avec une profondeur assez grande pour avertirT T Ldepartnœuds dans la grille. Cette valeur n’a pas besoin d’être très grande et peut ne représenter que quelques pourcents du nombre de nœuds du système. Encore une fois, des techniques d’évaluation du nombre de nœuds dans le système peuvent être employées si une estimation n’est pas possible.

Algorithme 14Réception, sur un nœud de la grille, d’une requête permettant de faire connaître une ressource rare

1: procedureRECEPTIONREQUETERESSOURCERARE(ressourceRare,TTL) 2: ifressourceRare/cacheRessourceRaresthen

3: cacheRessourceRarescacheRessourceRares∪ {ressourceRare}

4: end if

5: ifT T L>0then

6: noeudChoisirU nVoisinAuHasard()

7: EnvoiIn f ormationRessourceRare(caracteristiquesRessourceLocale,T T L−1) 8: end if

9: end procedure

L’algorithme 14 présente la marche aléatoire propagée dans le système et l’algorithme 15 présente la façon dont le cache est mis à jour toutes lesδ minutes.

68 Le système d’information et l’allocation des ressources dans le système Vigne Algorithme 15Mise à jour du cache de ressources rares

1: procedureMAJCACHERESSOURCERARE

2: whilevraido

3: for eachressourceRarecacheRessourceRaresdo 4: if(DateInsertionCache(ressourceRare)>γ)then

5: cacheRessourceRarescacheRessourceRares− {ressourceRare}

6: end if

7: end for each 8: Dormir(δ) 9: end while 10: end procedure

4.2.4 Réflexion sur la pertinence de l’utilisation des réseaux logiques non