Implantation d’un framework tolérant aux pannes pour la résolution de cas de calcul numérique
dans un système distribué, il existe des situations dans lesquelles des membres du système ne sont plus en mesure de communiquer avec les autres membres du même système. Cela arrive en général pour deux raisons principales :– Soit parce que l’un des membres de la communauté est en panne ;– Soit parce que la connexion entre les membres de la communauté ne fonctionne plus.Ce type de défaillance, dite partielle -c’est à dire la défaillance d’une partie du système-, peut survenir à tout moment et peut être intermittente ou de longue durée.Un des principaux challenges de la mise en place d’un système distribué est d’être tolérant à ces différentes pannes. En effet, la propriété de réagir face à une défaillance dans un tel système complique considérablement le travail des développeurs. En contrepartie, rendre un système distribué tolérant aux pannes est une marque de qualité et un atout indéniable pour se différencier des autres systèmes du même type. Les composants mis en relation dans ce type de système proposent des ressources ou des services aux autres composants du système. La panne d’un ou plusieurs de ces composants peut conduire, par exemple, à des ressources inutilisées non libérées ou à des services qui continuent de s’exécuter alors que le client du service n’attend plus de réponse. Ces situations entrainent un système distribué vers une consommation inutile des ressources ou, plus grave encore, à un blocage total du système. Du point de vue de l’utilisateur final, cela signifie ne par voir ces pannes et donc ne pas perdre le temps de calcul déjà consommé (transparence de panne).
Présentation générale de l’architecture MCA
Les résultats obtenus dans le chapitre 2 ont abouti à la définition des exigences pour une plate- forme logicielle de calcul numérique où les transparences de localisation, d’échelle et de concur- rence sont respectées. Ainsi, les différents termes π-calcul écrits dans le chapitre 2 se concrétisent par les composants présentées dans ce chapitre (cf. Figure 4.1) :– Le terme CaseDirectory (eq. 2.61) se concrétise par le service MCAService ;– Le terme W orker (eq. 2.64) se concrétise par un agent MCAWorker et le terme W orker– Le terme ComputationCase (eq. 2.58) se concrétise par le composant ComputationSpace. Celui-ci est un space et concrétise également les annuaires modélisés par les termes T askDirectory (eq. 2.20), DHDirectory (eq. 2.40) et P ropertyDirectory (eq. 2.49). Le terme M aster (eq. 2.60) est lui concrétisé par un agent mobile d’un type de ComputeAgent. Enfin, le rôle mo- délisé par le terme CaseHanler (eq. 2.59) se concrétise par les fonctionnalités offertes par l’utilisation d’un space.
Notre framework MCA permet de mettre en place une architecture logicielle dédiée à la résolution de cas de calcul numérique. Chaque cas de calcul est associé à un ComputationSpace qui contient les différents éléments nécessaires à la résolution du cas. L’ensemble des cas de calcul, chacun représenté par un ComputationSpace, forme la plate-forme de calcul MCA. Cette plate-forme est accessible par le service MCAService dont plusieurs instances sont actives afin de rendre ce service tolérant aux pannes. Ce service offre à un utilisateur la possibilité d’ajouter, de récupérer ou de supprimer un cas de calcul de la plate-forme. De plus, les agents MCAWorker se connectent à la plate-forme de calcul par le service MCAService. Ces agents ont alors la possibilité de participer à la résolution d’un cas de calcul via le composant ComputationCase qui joue le rôle de proxy. Si le nombre d’agents MCAWorker connectés à la plate-forme de calcul est supérieur àla demande de ressources de calcul, alors les agents MCAWorker inactifs sont considérés comme disponibles (transparence de localisation). Ces derniers seront utilisés si un cas de calcul venait à demander de nouvelles ressources ou si un nouveau cas de calcul était ajouté à la plate-forme de calcul. La figure 4.2) propose une vue d’ensemble de cette architecture avec les composants ComputationSpace, MCAService et MCAWorker. Une vue plus précise est fournie par la figure 4.16 montrant les communications entre un agent MCAWorker et le service MCAService.