Question

J'ai regardé récemment akka et il est assez impressionnant. On dirait qu'il a la plupart des fonctionnalités de tueur de Erlang - la transparence de l'emplacement, les hiérarchies de supervision, et plus encore. Existe-t-il des caractéristiques Erlang a AKKA ne fonctionne pas?

Était-ce utile?

La solution

Disclaimer: Je suis le bon de commande pour Akka

  • Erlang ne copie-sur-send - utilisations Akka la mémoire partagée (objets immuables) pour en VM envoie
  • Erlang fait par processus GC - utilise Akka JVM GCS
  • OTP - Akka intègre avec l'écosystème Java (Apache Camel, JAX-RS , etc etc)
  • Erlang Le processus Ordonnancement pour vous - Akka vous permet d'utiliser de nombreux répartiteurs avec une configuration sans fin possibilités
  • Erlang ne code à chaud reload - Akka peut supporter, mais il est moins souple en raison de JVM classloading

Ce sont ceux du haut de ma tête.

D'autre part, en utilisant des moyens que vous pouvez Akka utiliser Scala, Java, Groovy ou JRuby pour écrire vos applications.

Autres conseils

Dans les processus Erlang sont garantis pour commuter environ 1000 chaque réduction. Dans un tel cadre naïf à titre d'agent Scala / Akka possède un programmateur jusqu'à ce qu'il termine le travail en réception. Échec et mat. Jeu terminé. Hasta la vista :) Les gens, ne perdez pas votre temps sur des pseudo techs. Je choqué que les gars se comparent ici Scala avec Erlang.

Il y a aussi beaucoup d'autres soi-disant « caractéristiques tueuses », mais voici mon conseil, ne pense pas en termes de fonctionnalités, pensez à idiomes qui permet langue. Scala vole « les meilleures fonctionnalités », Erlang permet vous / outils avec idiomes droit à des systèmes de construction fiable, avec un langage de haut niveau qui conduit de ces idiomes droit. Lorsque vous apprenez Erlang vous reconstruisez votre esprit, votre façon de penser sur le système fiable distribué, Erlang vous enseigne et les mises à niveau vous. Scala est juste un autre impératif (oh, désolé, multiparadigmal, drôle de mot) langue qui essaie de voler de bonnes caractéristiques d'autres langues.

Presque personne ne mentionne l'isolement du processus. Sans garanties de « votre fil ne peut pas salir avec mon ordure », les systèmes distribués sont beaucoup plus difficiles à raisonner sur. (Ils sont déjà assez difficile avec processus de Erlang.)

AFAIK (qui est pas loin, compte tenu de mon expérience directe limitée avec la machine virtuelle Java), que Erlang obtient effectivement l'isolation des processus « droit » sur la machine virtuelle Java. M. Google peut donner quelques conseils sur où trouver la recherche par Fox et Candea (?) Sur les systèmes de recherche qui utilisent un « micro-redémarrage » technique ( « axée sur le rétablissement de calcul »). développeur Un Erlang lit que la recherche et dit deux choses:

  1. Bienvenue au club, ce que vous a pris si longtemps?
  2. La machine virtuelle Java rend terriblement, terriblement difficile à joindre, cependant. : -)

Pour moi, le code remplacement à chaud dans un cluster Erlang entier sans temps d'arrêt (par exemple: make:all([netload]). Est l'une des caractéristiques tueuses Erlang

Mais nous allons revenir sur votre question: Qu'est-ce que akka que Erlang ne fonctionne pas? Bien sûr, vous pouvez ajouter des dizaines d'extensions et bibliothèques (scala, AKKA, ressort, OSGi, ...) à Java pour essayer de se rapprocher de Erlang. Mais où est le point? En somme toutes ces extensions sont beaucoup plus complexes que l'apprentissage de la langue simple et Erlang qui a maintenant prouvé depuis plus de deux décennies qu'il peut faire l'offre d'emploi supérieure avec une évolutivité sans interruption de service.

Probablement Erlang est mieux pour les grands systèmes distribués (après la réponse de vjache) mais pour un serveur normal quand vous voulez juste utiliser la pleine puissance de plusieurs unités centrales alors Akka est bon choix- offre une bonne abstraction, la performance et l'intégration avec l'écosystème Java.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top