Para comprender akka, primero debe comprender el modelo de actor (aunque, tenga en cuenta que el kit de herramientas de Akka contiene mucho más que solo actores. También tiene agentes, agrupación y, a partir de 2.4.2, una implementación de flujos reactivos y un http biblioteca).
Los actores son unidades de computación, y usted se comunica con ellos a través de mensajes. Cada actor tiene cierta lógica comercial local, pero es más o menos una caja negra para el código externo. Puede enviar mensajes a un actor o recibir un mensaje de un actor, pero no puede acceder directamente a su lógica interna. Se ve algo como esto
- ¿Vbscript se usa para algo en estos días?
- ¿Cómo es poder codificar pero no conocer algoritmos o estructuras de datos?
- ¿Alguna vez JavaScript obtendrá operadores binarios útiles para objetos?
- ¿A qué trabajo te cambiaste de ingeniería de software y por qué?
- ¿Puedo pensar en mi futuro como el de un probador de software?
De acuerdo, no del todo, imagina una versión robótica perfecta de eso.
Cada actor tiene un buzón que es tanto una cola como un policía de tráfico. Los mensajes son enviados por otros actores y pueden acumularse en la cola, pero exactamente un mensaje puede ingresar al bloque lógico de un actor. Eso significa que el código dentro del actor está protegido contra problemas de concurrencia.
Eso, por supuesto, significa que todos los demás tendrán que esperar hasta que sea su turno para que se procese su mensaje (en el diagrama anterior, si Brad recibe mensajes de Angelina y Jennifer, los leerá en el orden recibido, uno por vez ) Eso puede estar bien en algunos casos (piense en una secuencia, donde necesita un orden predecible).
Si necesita un procesamiento paralelo, lo más probable es que necesite un grupo de actores (el club de fans de Brad probablemente sea manejado por más de un actor) que pueda procesar los mensajes dirigidos a Brad. Cuando usa un grupo de actores, puede tener un solo buzón (el buzón del club de fans) atendido por múltiples actores, pero aún así solo un mensaje puede ingresar a cualquier actor (asistente).
Dado que la comunicación se realiza a través de mensajes asincrónicos, puede escalar dando forma a las colas de mensajes (agregando más horas de trabajo), agregando más actores a sus grupos (contratando más asistentes) o controlando la contrapresión (cuánto correo se entrega).
Los actores son generalmente baratos, y no es raro que las aplicaciones tengan cientos de miles de actores en un momento dado.
Si desea participar en una discusión sobre los actores en general, puede obtenerlo de la boca del caballo:
Hewitt, Meijer y Szyperski: The Actor Model (todo lo que quería saber, pero tenía miedo de preguntar) (Canal 9)