Précédent : Fondements scientifiques Remonter :
Fondements
scientifiques Suivant : Persistance et
ramasse-miettes
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).