1 of 12

Introduction au modèle d’acteurs

Rémi SHARROCK, Télécom Paris

2 of 12

Historique

Carl Hewitt + Bishop and Steiger 1973

Irene Greif 1973: sémantique opérationelle

Henry Baker 1975: lois axiomatiques d’un système d’acteurs

Gul Agha 1985: grande dissertation

L’entreprise Ericsson (Agner Krarup Erlang) ~1985 l’utilise massivement

-> langage Erlang (Ericsson Language)

3 of 12

Concurrence, parallélisme et répartition

La concurrence: condition qui existe quand au moins 2 “processus” “avancent” mais peuvent rentrer en une sorte de conflit.

Le parallélisme: condition qui existe quand au moins 2 “processus” s’exécutent en même temps à un instant donné.

La concurrence est donc une condition plus générale qui peut intégrer le parallélisme virtuel. C’est à dire la sensation que 2 processus “avancent” mais pourtant il n’y a qu’un processus qui s’exécute à chaque fois à tout instant.

La répartition: condition qui existe quand au moins 2 “processus” s’exécutent dans deux endroits différents (géographiquement, physiquement), avec parallélisme ou concurrence. La répartition est donc encore plus générale.

4 of 12

Le modèle d’acteurs

Un modèle conceptuel de répartition (concurrence et parralélisme possibles).

Un acteur est l’unité fondamentale dans ce modèle. Tout est acteur.

Les acteurs ne ne sont en général pas en concurrence entre eux sauf s’ils sont liés à un élément externe au modèle d’acteurs (cas très particulier qu’il faut éviter si possible en ayant UN SEUL ACTEUR PAR ELEMENT EXTERNE).

Les acteurs ne partagent pas de mémoire.

Les acteurs communiquent par messages.

5 of 12

Un acteur

Une entité très légère (en mémoire pile/tas) qui a une adresse, qui s’exécute sur son propre “processus” (autonome), qui a son propre état, qui n’a pas d’état partagé et qui peut recevoir des messages dans une boîte à messages. Un acteur peut traiter un seul message à la fois.

Axiomes des acteurs: En réponse à un message reçu, un acteur peut:

  • Créer un nombre fini de nouveaux acteurs
  • Changer le comportement lors de la réception d’un prochain message
  • Envoyer un nombre fini de messages à d’autres acteurs

Il n’y a pas d’ordre dans ces actions possibles, elles peuvent s’exécuter en parallèle. Si plusieurs messages sont reçus en même temps, un seul est traité les autres attendent dans la boite à message.

6 of 12

Une boite à messages

Contient les messages en attente de traitement pour un acteur.�Est liée à un seul acteur.�Est de type FIFO: First In First Out�Pour mettre un message dans la boite à message il faut connaître l’adresse de l’acteur concerné.

Si plusieurs messages sont reçus en même temps, un seul est traité les autres attendent dans la boite à message. De toutes façons “en même temps” n’est pas possible donc il y aura un ordre et donc une file FIFO.

7 of 12

Un message

Un message contient au minimum une adresse (plusieurs adresses possibles dans des cas particuliers) d’un acteur (de plusieurs acteurs dans des cas particuliers).

Un message est une entité immutable: ne peut pas être modifié après sa création.

Un message doit pouvoir transiter entre les acteurs, même si les acteurs s’exécutent sur des machines distantes.

Dans le modèle d’acteurs, un message est envoyé directement, comme une lettre à la poste (ou un SMS), contrairement à une conversation téléphonique, il n’y a pas besoin d’établir une connexion (allo/allo).

8 of 12

Le modèle de calcul d’un acteur et d’un système d’acteurs

Pour un acteur

Calcul : comportement (dynamique)

Stockage : modèle d’états non partagés.

Communication : par messages

Un seul message est traité à la fois.

Un acteur peut bloquer (mais il faut éviter) pour attendre (en général un message ou un élément externe au système d’acteurs).

Pour un système d’acteurs

Plusieurs acteurs peuvent s’exécuter en même temps.

Plusieurs messages peuvent transiter dans le système en même temps.

Régit par un protocole = un algorithme réparti.

Le gardien du système est en général le superviseur du premier acteur créé.

9 of 12

Un système de systèmes réparti

Plusieurs systèmes d’acteurs peuvent s’interconnecter pour former un système de systèmes d’acteurs réparti.

Les systèmes sont répartis géographiquement.�Un acteur appartient à un seul système à un instant t mais peut migrer vers un autre système (si l’implémentation le permet).

Un acteur contient alors une adresse locale au système dont il appartient et une adresse distante pour les autres systèmes dont il ne fait pas partie.

10 of 12

Un système tolérant aux fautes

Un acteur qui crée un autre acteur va être son superviseur par défaut pour vérifier son fonctionnement (s’il est toujours vivant par exemple).

Un superviseur peut déléguer ses tâches de supervision à un autre acteur qui devient superviseur à sa place.

Un superviseur peut évidemment être supervisé par un autre superviseur.

Un superviseur peut redémarrer un acteur supervisé ou peut rediriger des messages destinés à un supervisé vers un autre acteur qu’il supervise (à vérifier quand même).

Un superviseur est alerté quand un de ses supervisés meurt/ne fonctionne plus.

11 of 12

Avantages et inconvénients du modèle d’acteurs

Avantages:

Facile à passer à l’échelle

Tolérant aux fautes

Réparti géographiquement

Pas d’état partagé

Inconvénients:

Les acteurs peuvent bloquer

Les boites de messages peuvent déborder

12 of 12

Introduction par Carl Hewitt lui-même