Ce lundi 29/11 à eu lieu, chez Xebia, le Scala User Group. La session de cette soirée a été l’occasion d’avoir un aperçu de l’API Akka, destinée à mettre en place un système de calcul distribué.
Celui-ci se base sur des acteurs (« Actors »), qui sont des composants distribués sur une ou plusieurs machines, et qui prennent en charge des calculs à partir d’une file de message propre. Un orchestrateur va prendre l’ensemble des données à traiter, les subdiviser en paquets, mettre ces paquets dans des messages et les répartir suivant les différents acteurs. De cette manière, chaque acteur peut traiter son contenu indépendamment des autres, ce qui permet de pouvoir lancer les calculs en parallèle (sur différents coeurs de processeur, ou différentes machines, etc…). Ce modèle, assez classique pour du calcul réparti, est enrichi dans Akka d’une gestion de fail-over et d’une gestion de transaction propres et simples.
Voilà un exemple de code (tiré de la homepage de Akka):
// Code du serveur
class HelloWorldActor extends Actor {
//Définition de l'action à la réception d'un message
def receive = {
case msg => self reply (msg + " World")
}
}
// Démarrage du serveur et inscription
RemoteNode.start("localhost", 9999).register(
"hello-service", actorOf[HelloWorldActor])
// Code du client
val actor = RemoteClient.actorFor("hello-service", "localhost", 9999)
//Envoi d'un message sur l'acteur et attente du résultat
val result = actor !! "Hello"
Laisser un commentaire