tutorial play framework playframework rabbitmq akka actor

playframework - play - ¿Cuáles son las alternativas de idioma y producto para Akka?



play framework tutorial (6)

Akka es un kit de herramientas y tiempo de ejecución para construir sistemas simultáneos y distribuidos . Para lograr esto, Akka usa el modelo Actor. Si está buscando una alternativa para Akka, creo que no puede encontrar una solución completa como Akka, porque Akka tiene varias características que le permiten desarrollar un sistema robusto simultáneo y distribuido :

  • Akka actor
  • Actor de Enrutamiento, Supervisión y Monitoreo
  • Mensajes asincrónicos y no bloqueantes
  • Akka Cluster (para la gestión del clúster)
  • Persistencia de Akka (para implementar el abastecimiento de eventos, el actor de persistencia y los mensajes de entrega al menos una vez)
  • Akka I / O (para comunicación TCP y UDP)
  • Akka HTTP (para comunicación HTTP como cliente o servidor)
  • Akka Stream (para el procesamiento de flujo)
  • ...

Pero sugiero echar un vistazo a Erlang / OTP y Quasar .

En este momento estoy mirando Play Framework y me gusta mucho. Una de las partes publicitadas entre las características ofrecidas en Play es Akka .

Para entender mejor Akka y cómo usarlo correctamente, ¿puede decirme cuáles son las alternativas en otros idiomas o productos?

¿Cómo se compara RabbitMQ con esto? ¿Hay mucha superposición? ¿Es práctico usarlos juntos? ¿EN que casos de uso?


El mejor consejo que puedo ofrecer, ya que también realicé el mismo proceso de pensamiento cuando Play 2.0 se unió a Typesafe y comencé a utilizar Akka más, es buscar "Actor modelo".

Wikipedia es un gran recurso - http://en.wikipedia.org/wiki/Actor_model . Tiene una lista de lenguajes de programación que pueden admitir el modelo de actor, y también tiene una lista de marcos (incluido Akka) que se basan en el modelo Actor.

En pocas palabras, el modelo Actor se basa en el concepto de actores en un modelo de computación concurrente. Los actores no necesariamente significan la transmisión de mensajes, pero los casos de uso más comunes tendrán a los actores transmitiendo mensajes (que es donde aparecerán las similitudes con rabbitMQ).


El mejor lugar para comenzar es una gran documentación oficial de Akka . Creo que el producto / marco más cercano a Akka es el lenguaje erlang . Supongo (no he usado Play framework) Akka se usa allí para implementar Comet y otros procesamientos asincrónicos.

rabbitmq es algo similar en ideas (infraestructura para enviar mensajes), tenga en cuenta que RabbitMQ incluso está escrito en erlang , pero tienen casos de uso ligeramente diferentes. Diría que mientras RabbitMQ se enfoca en el envío de mensajes, Akka se trata más de actores (receptores y remitentes de mensajes).



Uso RabbitMQ + Spring AMQP + Guava''s EventBus para registrar automáticamente mensajeros tipo Actor usando el EventBus de Guava para un patrón que coincida con los mensajes recibidos.

La similitud con Spring AMQP y Akka es asombrosa. El SimpleMessageListenerContainer + MessageListener de Spring AMQP es prácticamente equivalente a un Actor.

Sin embargo, para todos los efectos, RabbitMQ es más poderoso que Akka, ya que tiene muchas implementaciones de clientes en diferentes idiomas, proporciona persistencia (colas duraderas), enrutamiento topológico y algoritmos de QoS conectables .

Dicho esto, Akka es mucho más conveniente y, en teoría, Akka puede hacer todo lo anterior y algunas personas han escrito extensiones, pero la mayoría solo usa Akka y luego hace que Akka entregue los mensajes a través de RabbitMQ. Además, el contenedor Spring AMQP SimpleMessageListener es bastante pesado y no está claro qué pasaría si crearas un par de millones de ellos.

En retrospectiva, consideraría usar Akka para RabbbitMQ en lugar de Spring AMQP para proyectos futuros.


http://scalecube.io es una librería de microservicios de baja latencia. una solución completa que le permite desarrollar un sistema robusto concurrente y distribuido.

Como Akka: está basado en el chisme y el protocolo de nado. - su mensaje impulsado basado en protobuf (dúplex completo). - es para la JVM. - baja latencia y aproximadamente ~ 6 veces más rápido. - usa RxJava probado para ser más rápido que las transmisiones de akka.

A diferencia de Akka: - es menos obstinado - no es un marco. - no forzar el patrón del actor como un patrón holístico.