2011-09-06 3 views
5

Quand devrais-je utiliser Actors vs. Remote Actors dans Akka?Quand utiliser des acteurs locaux vs distants?

Je comprends que les deux peuvent mettre à l'échelle une machine, mais seuls les acteurs distants peuvent évoluer, donc y a-t-il une utilisation pratique de la production de l'acteur normal? Si un acteur distant n'a qu'un surdébit initial minime et n'a aucun autre surdébit majeur à celui d'un acteur normal, alors je pense que l'utilisation d'un acteur à distance serait la norme, car il peut évoluer et avec facilité. Même s'il n'y a jamais besoin d'augmenter le code de production, il serait bien d'avoir l'option (si elle ne s'accompagne pas de bagages). Toute idée sur le moment d'utiliser un acteur par rapport à un acteur distant serait très appréciée.

Répondre

8

Les acteurs distants ne peuvent pas évoluer, ils ne sont que des références distantes à un acteur local sur une autre machine. Pour Akka 2.0, nous introduirons des acteurs en cluster, ce qui vous permettra d'écrire une application Akka et de la mettre à l'échelle uniquement en utilisant config.

2

Les acteurs normaux peuvent être utilisés pour envoyer des messages dans un projet local. Comme pour les acteurs à distance, vous pouvez l'utiliser pour envoyer des messages à des projets dépendants connectés au projet qui envoie le message.

S'il vous plaît se référer ici pour les acteurs Akka à distance

http://doc.akka.io/docs/akka/snapshot/scala/remoting.html

1

La question demande « Si un acteur à distance a seulement une surcharge de la configuration initiale mineure et ne pas d'autres grands frais généraux alors je pense que l'utilisation un acteur à distance serait la norme ". Pourtant, le Fallacies of distributed computing fait le point que c'est une erreur de conception de supposer que la communication à distance avec une technologie n'a pas de frais généraux. Vous avez l'avantage de copier les messages en octets et de les transmettre à travers l'interface réseau. Vous avez également toute la complexité des différents processus en cours, en panne, bloqués ou inaccessibles et du réseau ayant un hoquet conduisant à des messages perdus, dupliqués ou réordonnés.

This great article a des exemples concrets d'erreurs de réseau bizarres qui rendent difficile la mise à l'épreuve à distance. Le chef de projet Akka Roland Kuln dans son free video course about akka dit que dans son expérience pour chaque 1T de messages réseau envoyés, il voit une corruption. Notes on Distributed Systems for Young Bloods indique que «les systèmes distribués ont tendance à avoir besoin d'une distribution réelle, et non simulée, pour éliminer leurs bogues», de sorte que même de bons tests unitaires ne constituent pas un système parfait. Il y a beaucoup de conseils que le remoting n'est pas "gratuit" mais un travail acharné pour être parfait.

Si vous avez besoin d'utiliser la communication à distance pour la disponibilité, ou pour passer à une échelle importante, alors notez que AKKA effectue la livraison at-least-once avec une duplication possible. Vous devez donc vous assurer que les messages dupliqués ne créent pas de mauvais résultats. Au moment où vous commencez à utiliser la communication à distance, vous avez un système réparti qui crée des problèmes dont il est question dans la section Distributed systems for fun and profit. À moins que vous ne fassiez très simplement des choses comme des calculatrices sans état qui sont idempotentes aux messages dupliqués, les choses deviennent difficiles. Une des tâches sur ce cours vidéo akka sur le lien ci-dessus est de créer un magasin de valeurs-clés répliquées qui peut traiter les messages perdus en écrivant vous-même la logique. C'est loin d'être une tâche facile. L'état réparti entre différents processus devient très dur, les acteurs encapsulent l'état, donc la distribution des acteurs peut devenir très difficile, selon les exigences de cohérence et de disponibilité du système que vous construisez.Tout cela implique que si vous pouvez éviter d'envoyer à distance et d'atteindre ce que vous devez atteindre, il serait sage de l'éviter. Si vous avez besoin d'un accès distant, alors Akka le rend facile grâce à son location transparency. Donc, alors que c'est une excellente boîte à outils à prendre avec vous au travail; vous devriez vérifier si le travail a besoin de tous les outils ou seulement les plus simples dans la boîte.

Questions connexes