Difference between revisions of "VT2015 akka"

From air
Jump to navigation Jump to search
Line 20: Line 20:
 
Akka, Toolkit, JVM, Scala, JAVA
 
Akka, Toolkit, JVM, Scala, JAVA
   
=Synthèse sur Akka=
+
=Synthèse=
   
 
==Introduction==
 
==Introduction==
  +
  +
Akka est un framework pour la construction de systèmes distribués basés sur les acteurs. La philosophie adoptée en termes de tolérance de panne pour ces systèmes est “let it crash“. En effet, les acteurs sont des éléments légers, qu’il est facile d’instancier et de relancer en cas de crash (du fait qu’ils ne partagent pas leur état).
  +
Pour cela, Akka impose une supervision afin de pouvoir gérer la mort prématurée d’acteurs, et ce dans une hiérarchie de supervision : tout nouvel acteur est supervisé par son parent. Cette supervision permet la création de systèmes qui s’auto-réparent.
  +
  +
De plus les acteurs sont purement asynchrones et peuvent être relocalisés de manière transparente, y compris dans une autre JVM (ce qui permet la création d’un véritable système distribué sur un cluster).
  +
  +
Akka permet de plus d’aller un peu plus loin que le modèle d’acteurs, en introduisant un hybride entre les acteurs et la mémoire transactionnelle logicielle (Software Transactional Memory, STM), qui est une autre alternative à la synchronisation par verrous dans laquelle les opérations sur les données partagées sont effectuées au sein de transactions, en isolation les unes des autres. Akka introduit donc les Transactors, qui ont des flux de messages “atomiques”, avec possibilités de réessayage automatique et de rollback.
  +
  +
Akka a des API en Java, mais fait aussi désormais partie de la pile Typesafe pour la programmation réactive : le langage Scala, Akka, et le framework web Play!.

Revision as of 00:19, 13 November 2015

Présentation

  • Enseignants : Georges-Pierre Bonneau, Didier Donsez (VT2015)
  • Sujet : Akka
  • Date : 13 novembre 2015
  • Auteur : ZHANG Zhengmeng

Résumé

Akka est une trousse à outils open-source et l'exécution de simplifier la construction d'applications concurrents et distribués sur la JVM. Akka soutient plusieurs modèles de programmation pour la concurrence, mais il met l'accent sur la concurrence basée sur les acteurs, avec l'inspiration tirée de Erlang. Les liaisons de langage existent pour Java et Scala. Akka est écrit dans Scala, et à partir de Scala 2.10, la mise en œuvre d'acteur de Akka est inclus dans le cadre de la bibliothèque standard Scala.

Mots clefs

Akka, Toolkit, JVM, Scala, JAVA

Abstract

Akka is an open-source toolkit and runtime simplifying the construction of concurrent and distributed applications on the JVM. Akka supports multiple programming models for concurrency, but it emphasizes actor-based concurrency, with inspiration drawn from Erlang. Language bindings exist for both Java and Scala. Akka is written in Scala, and as of Scala 2.10, Akka's actor implementation is included as part of the Scala standard library.

Key Words

Akka, Toolkit, JVM, Scala, JAVA

Synthèse

Introduction

Akka est un framework pour la construction de systèmes distribués basés sur les acteurs. La philosophie adoptée en termes de tolérance de panne pour ces systèmes est “let it crash“. En effet, les acteurs sont des éléments légers, qu’il est facile d’instancier et de relancer en cas de crash (du fait qu’ils ne partagent pas leur état). Pour cela, Akka impose une supervision afin de pouvoir gérer la mort prématurée d’acteurs, et ce dans une hiérarchie de supervision : tout nouvel acteur est supervisé par son parent. Cette supervision permet la création de systèmes qui s’auto-réparent.

De plus les acteurs sont purement asynchrones et peuvent être relocalisés de manière transparente, y compris dans une autre JVM (ce qui permet la création d’un véritable système distribué sur un cluster).

Akka permet de plus d’aller un peu plus loin que le modèle d’acteurs, en introduisant un hybride entre les acteurs et la mémoire transactionnelle logicielle (Software Transactional Memory, STM), qui est une autre alternative à la synchronisation par verrous dans laquelle les opérations sur les données partagées sont effectuées au sein de transactions, en isolation les unes des autres. Akka introduit donc les Transactors, qui ont des flux de messages “atomiques”, avec possibilités de réessayage automatique et de rollback.

Akka a des API en Java, mais fait aussi désormais partie de la pile Typesafe pour la programmation réactive : le langage Scala, Akka, et le framework web Play!.