scala - akka actors
Diferentes implementaciones de Scala Actor (5)
Estoy tratando de encontrar la implementación del actor ''correcto''. Me di cuenta de que hay un montón de ellos y es un poco confuso elegir uno. Personalmente, estoy especialmente interesado en actores remotos, pero creo que una descripción completa sería útil para muchos otros. Esta es una pregunta bastante general, así que no dude en responder solo por la implementación que conoce.
Conozco las siguientes implementaciones de Scala Actor (SAI). Por favor agregue los que faltan.
- Scala 2.7 (diferencia a)
- Scala 2.8
- Akka ( http://www.akkasource.org/ )
- Ascensor ( http://liftweb.net/ )
Scalaz ( http://code.google.com/p/scalaz/ )
¿Cuáles son los casos de uso de destino para estas EFS (marco empresarial liviano frente a "pesado")?
- ¿Apoyan a los actores remotos? ¿Qué deficiencias tienen los actores remotos en las EFS?
- ¿Cómo es su rendimiento?
- ¿Qué tan activa es la comunidad?
- ¿Qué tan fáciles son para empezar? ¿Qué tan buena es la documentación?
- ¿Qué tan fáciles son de extender?
- ¿Qué tan estable son? ¿Qué proyectos los están usando?
- ¿Cuáles son sus defectos?
- ¿Cuáles son sus principios de diseño?
- ¿Están basados en hilos o basados en eventos (recibir / reaccionar) o ambos?
- Recibe anidado
- hotswapping el bucle de mensaje del actor
A partir de Scala 2.10 , scala actors ahora está en desuso y Akka Actors ahora es parte de la distribución estándar
Esta es la comparación más completa que he visto hasta ahora:
http://doc.akka.io/docs/misc/Comparison_between_4_actor_frameworks.pdf través de http://klangism.tumblr.com/post/2497057136/all-actors-in-scala-compared
Hasta donde yo sé, solo Scala y Akka apoyan a los actores remotos.
Akka está respaldado por soluciones escalables, que ofrecen soporte comercial y complementos para Akka. Akka parece una solución de peso pesado, que apunta a la integración con los marcos existentes (camel, AMQP, JTA, Comet, Spring, Redis) y adicionalmente STM y persistencia.
Akka en comparación con Scala no es compatible con las recepciones anidadas, pero admite el hotswapping del bucle de mensajes de los actores y tiene actores basados en hilos y en eventos, así como los llamados "basados en eventos de un solo hilo".
Me di cuenta de que akka impone coincidencias exhaustivas. Entonces, incluso si técnicamente receive espera una función parcial, la función no debe ser parcial. Esto significa que debe manejar cada mensaje de inmediato.
Scala 2.7.7. vs 2.8 después de la distribución The Scala 2.8.0 RC3 :
Los nuevos reactores proporcionan actores más livianos y puramente basados en eventos con identificación de emisor opcional e implícita. Se agregó soporte para actores con semántica estilo daemon. Los actores se pueden configurar para usar el grupo de unión / unión JSR166y eficiente, lo que resulta en mejoras de rendimiento significativas en 1.6 JVM. Los programadores ahora son conectables y más fáciles de personalizar.
También hay un documento de diseño de Haller: Scala Actors: Programación unificada basada en subprocesos y basada en eventos