Projet : SOR

previous up next contents
Précédent : Fondements scientifiques Remonter : Fondements scientifiques Suivant : Persistance et ramasse-miettes


   
La réplication de données et la cohérence

 

Mots clés : cache, cohérence, grande échelle, réplication, .

La coopération à l'échelle de l'Internet implique le partage de l'information entre des agents ou processus répartis sur des sites géographiquement séparés. Or, les ordinateurs d'un système réparti ne partagent pas de mémoire. Ils peuvent communiquer par des appels de procédure à distance, mais la latence des communications entre des machines distantes rend cette solution inadaptée pour une coopération efficace à l'échelle de l'Internet. La réplication des données s'impose donc, mais celle-ci pose des problèmes fondamentaux et difficiles.

Considérons des objets, désignés par des références, et accédés par invocation de leurs méthodes. On peut rendre une référence à un objet distant, et l'appel de ses méthodes, indifférenciables du cas local grâce à un objet d'indirection, dit souche ou mandataire. Ce schéma dit d'invocation distante permet bien le partage transparent des objets; c'est celui qui est utilisé dans Corba [DHH+91] et Java RMI [WRW96].

Mais l'invocation distante est coûteuse, et ne passe pas à l'échelle si l'objet partagé constitue un goulot d'étranglement. De plus, si ce schéma simplifie la communication, il ne résout pas les problèmes plus profonds de la répartition: parallélisme, défaillances, coûts, etc.

Le coût de l'accès distant et la présence de ressources matérielles abondantes conduisent naturellement à gérer des copies, ou réplicats, de la donnée distante[*]. La réplication augmente la disponibilité des données et permet de tolérer les fautes. Lorsque les données sont accédées en lecture, elle élimine les goulots d'étranglement. Si une donnée répliquée est modifiée, les autres réplicats deviennent incohérents, et il faut propager la mise à jour. La réplication à grande échelle rencontre une contradiction majeure: assurer la cohérence des réplicats tout en conservant des performances acceptables. Un protocole de cohérence fort [LH89] est simple mais ne passe pas à l'échelle, d'où des récherches actives sur des cohérences affaiblies [KCZ92,GC89,BZ91,GL91]. Il y a lieu de rechercher un compromis entre contraintes de cohérence, tolérance aux fautes et performances.

De plus, les défaillances et l'hétérogeneité des politiques d'administration et de protection induisent des discontinuités dans le réseau. Le programmeur d'application exige néanmoins une continuité de service. Il faut donc d'une part, anticiper de telles discontinuités de service et d'autre part offrir des mécanismes de reconciliation pour rétablir la cohérence des réplicats qui ont été momentanément isolés les uns des autres.

Nos recherches sur la réplication à grande échelle concernent les moyens offerts aux programmeurs pour exprimer les compromis qui répondent le mieux à leurs attentes (voir §5.8 et §6.3), les modèles de cohérence faible pour nos applications cibles (voir §5.3, §6.4), et la garantie de la continuité de service sur des machines faiblement connectées (voir §5.9).



Footnotes

... distante[*]
Si le système crée automatiquement les réplicats distants au fur et à mesure des accès, dans une mémoire tampon invisible, on appelle cela un cache. Si toute la mémoire est gérée de cette façon, on parle d'une mémoire répartie virtuellement partagée ou MRVP.


previous up next contents
Précédent : Fondements scientifiques Remonter : Fondements scientifiques Suivant : Persistance et ramasse-miettes