scala akka vert.x

scala - Diferencia en el modelo de paso de mensajes de Akka y Vert.x



(2)

Desde un punto de vista superficial, son realmente similares, aunque personalmente considero que las ideas de vert.x son más similares a algunos sistemas MQ que akka ... la topología de vert.x es más plana: un artículo comparte un mensaje con otro artículo y recibe un mensaje. la respuesta ... en lugar de eso, akka es más como un árbol, donde hay varios actores, pero puede supervisar a los actores que usan a otro actor, ... para proyectos simples tal vez no sean tan importantes, pero para proyectos grandes podría apreciar un más "sistema jerárquico" ...

Por otro lado, vert.x ofrece una mejor interoperabilidad entre lenguajes muy populares *. Para mí ese es un punto importante, en el que necesitaría mezclar actores con un sistema MQ y tratar con más complejidad, vert.x lo hace simple y elegante ... así que la respuesta, ¿cuál es mejor? ... depende, si su el sistema se construirá solo sobre Scala, entonces akka podría ser la mejor manera ... si necesita comunicación con javascript, ruby, python, java, etc ... y no necesita una jerarquía compleja, entonces vert.x es el camino a seguir..

* (usando json, lo que podría ser una ventaja o desventaja en comparación con)

También debe tener en cuenta que vert.x es una solución completa, TCP, servidor http, enrutamiento, incluso websocket. Eso es bastante sorprendente porque ofrecen una pila completa y la api es muy limpia ... si eliges akka necesitarías usar un framework como juego, xitrum o spray ... personalmente no me gustan ninguno de ellos.

Además, recuerde que vertx es una plataforma sin opiniones, puede utilizar akka o kafka con ella, por ejemplo, sin casi ningún gasto general. La forma en que cada parte del sistema se desacopla dentro de un artículo hace que sea tan simple ...

Vert.x es un gran proyecto con una perspectiva increíble, pero realmente nuevo. Si necesita una solución ahora, tal vez no sea la mejor opción. Afortunadamente, puede aprender ambas y utilizar ambas en el mismo proyecto ...

Soy un programador de Scala y entiendo a Akka desde el punto de vista de un desarrollador. No he mirado en el código de la biblioteca Akka. He leído sobre los dos tipos de actores en el modelo Akka: basado en hilos y eventos, pero no habiendo ejecutado Akka a gran escala no tengo experiencia en la configuración de Akka para la producción. Y soy completamente nuevo en Vert.x. Entonces, desde la perspectiva de las opciones para construir una pila de aplicaciones reactivas, quiero saber:

  1. ¿El modelo de paso de mensajes de Akka y Vert.x es muy diferente? ¿Cómo?
  2. ¿Son las estructuras de datos detrás de los actores de Akka y las verticles de Vert.x para amortiguar los mensajes muy diferentes?

Después de hacer un poco de búsqueda en Google, me he dado cuenta de que, en comparación con Akka vs Vert.x, aún no se ha hecho (al menos no lo he encontrado).

Modelo de cálculo:

  • Vert.x se basa en el modelo Event Driven.
  • Akka se basa en el modelo de actor de concurrencia,

Corrientes reactivas:

  • Vert.x tiene secuencias reactivas incorporadas
  • Akka es compatible con Reactive Streams a través de Akka Streaming. Akka tiene operadores de transmisión (a través de Scala DSL) que son muy concisos y limpios.

Soporte HTTP

  • Vert.x tiene soporte incorporado para crear servicios de red (HTTP, TCP, etc.)
  • Akka tiene Akka HTTP para eso

Soporte de scala

  • Vert.x está escrito en Java
  • Akka está escrito en Scala y es divertido trabajar en

Servicios remotos

  • Vert.x admite servicios, por lo que necesitamos crear servicios explícitamente
  • Akka tiene Actores que pueden implementarse en cualquier lugar de la red, con soporte para agrupación, replicación, equilibrio de carga, supervisión, etc.

Referencias: