Si la perseverancia no me falla vamos a intentar dedicar un conjunto de posts a Akka 🙂 (en cuanto pueda el de Akka+Spring :))
Y para empezar un post explicando qué es Akka y qué pretende!.
¿Qué es?
Akka es una plataforma (o framework) inspirado por Erlang que busca el desarrollo simple de aplicaciones escalables y multihilo. Akka funciona sobre Scala y por tanto corre sobre la máquina virtual Java JVM.
Si en los lenguajes más tradicionales como Java la concurrencia se basa en la memoria compartida entre varios hilos y los métodos de sincronización Akka ofrece un modelo de concurrencia basado en actores.
· Un actor es un objeto con el que puedes interactuar enviándole mensajes: cada actor puede procesar mensajes y enviarle mensajes a otros actores.
· En una máquina virtual JVM pueden correr millones de actores a la vez construyendo una jerarquía padre (supervisor)-hijo con los padres monitorizando el comportamietno de los hijos.
· Además Akka permite de una forma sencilla splitear nuestros actores entre varios nodos de un cluster.
· Los actores pueden tener un estado interno pero la comunicación sólo ocurre pasando mensajes y nunca a través de estructuras compartidas.
¿Qué pretende?
En el diagrama podemos ver la evolución de la programación:
Las aplicaciones han evolucionado desde grandes procedimientos monolíticos a un modelo orientado a objetos, y con Spring y Java EE el diseño de las aplicaciones ha evolucionado a un modelo orientado a tareas.
Los EJBs o POJOs de Spring están diseñados para ejecutar una única tarea, estos objetos serán stateless para permitir gestionar el incremento de carga y hacer que las aplicaciones sean escalables.
Este modelo encaja en un Servidor de Aplicaciones en el que este se encarga de asignar los hilos de ejecución, pero y qué pasa en una aplicación Java que no usa un contenedor, entonces tenemos que ir a un modelo de programación multi-hilo.
Trabajar con hilos requiere un mayor nivel técnico ya que tendremos que tratar con locks, mutex,…
Akka surge en este scenario, abstrayendo todos estos conceptos en el Actor. Alla permite a los programadores escribir programas que puedan ejecutar cientos de tareas en paralelo.
Akka toma conceptos y técnica de Erland para construir modelos de tolerancia a fallos para que las aplicaciones fallen rápido y se recuperen de un problema tan rápido como sea posible.



Deja un comentario