Programmation distribuée : Akka, le jeu d'acteurs

L'un des modèles de programmation répartis est le modèle d'acteur, utilisé par Akka.
Schématiquement, ce modèle se base sur l'utilisation d'un groupe d'entités isolées : les acteurs.

Acteur

Un acteur consiste en un noeud de notre système réparti, ils ont chacun leur état propre, soit :

  • une file de "messages" à traiter,
  • une methode, fonction ou processus, qu'il utilisera pour les traiter ces messages,
  • une liste d'acteurs fils, dont ils seront responsables.

image.png

Le fait qu'ils soient isolés veut dire que leur état n'est pas partagé, ils ont chacun leur mémoire propre, et sont donc obligés de communiquer entre eux par message.

Lorsque l'acteur reçoit un tel message, il le traite, en réalisant plusieurs actions possibles comme :

  • le transformer,
  • le rediriger vers un autre acteur,
  • éventuellement créer un autre acteur (dont il sera le "parent").

Akka

Akka est un ensemble de module proposant un modèle de concurrence asynchrone, basé sur le système d'acteur.

Au départ, il s'agit d'une librairie scala, qui est un langage compilé pour fonctionner sur la jvm, et se pose donc en alternative au modèle de multi-threading apporté par JAVA. (la librairie est également portée pour le langage JAVA, ainsi que pour le framework .NET).

Le choix du language Scala n'est pas anodin, son paradigme fonctionnel permet une parfaite synergie avec celui prôné Akka, ainsi que d'autres frameworks applicatifs, comme kafka.

image.png

Akka comporte des mécanismes lui permettant de gérer les problèmes d'indisponibilités, le rendant ainsi résilient aux pannes d'un ou plusieurs noeuds. Tout en restant réactif, et adaptable en matière de capacité.

H2
H3
H4
3 columns
2 columns
1 column
Join the conversation now
Logo
Center