Pregunta

He estado buscando en akka recientemente y que es bastante impresionante. Se parece que tiene la mayor parte de las características del asesino de Erlang - transparencia de ubicación, las jerarquías de supervisión, y mucho más. ¿Hay alguna característica Erlang tiene que akka no?

¿Fue útil?

Solución

exención de responsabilidad: yo soy el PO de Akka

  • Erlang hace copy-on-send - usos Akka memoria compartida (objetos inmutables) para en-VM envía
  • Erlang hace por proceso GC - Akka utiliza JVM GC
  • OTP - Akka integra con todo el ecosistema de Java (Apache Camel, JAX-RS , etc, etc)
  • Erlang hace el proceso programar para usted - Akka que permite Los despachadores de utilizar muchos diferentes con una configuración sin fin oportunidades
  • Erlang hace código caliente recarga - Akka puede apoyarla, pero que es menos flexible debido a la JVM classloading

Estas son las de la parte superior de mi cabeza.

Por otro lado, el uso de medios Akka que puede utilizar Scala, Java, Groovy o JRuby para escribir sus aplicaciones.

Otros consejos

procesos

en Erlang están garantizados para ser conmutado aproximadamente cada 1000 reducciones. En un marco tan ingenua como agente de Scala / Akka posee un programador hasta que termine el trabajo en recibir. Mate. Juego terminado. Hasta la vista :) La gente, no pierda su tiempo en seudo técnicos. Me sorprendió que los chicos aquí comparan Scala con Erlang.

También hay muchos otros de los llamados "características asesinas", pero aquí es mi consejo, no pensar en términos de características, piense en los idiomas que permite lenguaje particular. Scala roba "mejores características", Erlang permite / implementos con modismos recto con respecto a los sistemas de construir de forma eficaz, con lenguaje de alto nivel que expulsado de esas expresiones correctas. Cuando se aprende Erlang va a reconstruir su mente, su forma de pensar sobre el sistema fiable distribuido, Erlang usted y mejoras que enseña. Scala es una más imperativa (oh, lo siento, multiparadigmal, palabra divertida) lenguaje que intenta robar buenas características de otros idiomas.

Casi nadie menciona el aislamiento de procesos. Sin garantías de "el hilo no puede meterse con mi basura", los sistemas distribuidos son mucho más difíciles de razonar acerca. (Ya están bastante difícil por procesos de Erlang.)

Que yo sepa (que no es el momento, dada mi experiencia limitada con la JVM), solo Erlang en realidad recibe el aislamiento de procesos "derecho" en la JVM. El Sr. Google puede dar algunas pistas sobre dónde encontrar la investigación por Fox y Candea (?) En los sistemas de investigación que utilizan una técnica de "micro-reinicio" ( "orientado a la recuperación de computación"). Un Erlang desarrollador dice que la investigación y dice un par de cosas:

  1. Bienvenido al club, lo que llevó tanto tiempo?
  2. La JVM hace que sea muy, muy difícil de ensamblar, sin embargo. : -)

Para mí, código de intercambio en caliente en todo un clúster Erlang sin tiempo de inactividad (por ejemplo: make:all([netload]). Es una de las características asesinas Erlang

Pero vamos a revertir su pregunta: ¿Qué significa tener que akka Erlang no lo hace? Por supuesto se puede añadir decenas de extensiones y bibliotecas (Scala, akka, primavera, OSGi, ...) para Java para tratar de llegar cerca de Erlang. Pero ¿dónde está el punto? En suma todas estas extensiones son mucho más complejo que el aprendizaje del lenguaje simple Erlang que ahora se ha demostrado por más de 2 décadas que puede hacer la escalabilidad superior oferta de trabajo con cero tiempo de inactividad.

Probablemente Erlang es mejor para sistemas distribuidos más grandes (a raíz de la respuesta de vjache) pero para un servidor normal cuando lo que desea utilizar toda la potencia de la CPU múltiples continuación, Akka es buena elección- proporciona una buena abstracción, el rendimiento y la integración con el ecosistema de Java.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top