He estado trabajando con akka durante 7-8 meses ahora diariamente. Cuando empecé, estaría trabajando en aplicaciones y notaría que los actores se usarían básicamente en cualquier lugar una vez dentro del sistema de actores para la comunicación entre la mayoría de los objetos. Así que hice lo mismo: girar a otro actor para x / y / z.
Me parece que esto puede ser demasiado indiscriminado, agregando complejidad donde no es necesario, pero no puedo encontrar ninguna discusión sobre dónde se debe usar a los actores frente a la lógica sincrónica o incluso asíncrona a través de futuros. Comencé a reflexionar sobre mi postura después de que mi compañero de trabajo mencionó algo similar. Hace poco me di cuenta de varios casos en los que he reflexionado sobre una tarea y luego evité crear otro actor porque podía lograr el mismo resultado de forma segura en una implementación inmutable; esperar el resultado es el caso de uso real.
En particular, me parece que en cualquier caso en el que juegues con un estado inmutable, los actores crean complejidad y limitan el rendimiento; una función pura en un objeto, por ejemplo, puede llamarse simultáneamente sin riesgo alguno a cualquier nivel de concurrencia, sin embargo, un actor solo puede procesar un mensaje a la vez. La consideración alternativa es que usted estacionará el hilo si necesita esperar el resultado, a menos que comience a usar futuros, pero en los casos en los que no necesita preocuparse por los mensajes asíncronos o la escala, parece que puede ser excesivo contratar a un actor. / p>
Entonces, mi pregunta es: ¿hay un mal momento para usar actores? Tengo curiosidad por cómo se ve Erlang y me gustaría mucho la opinión de otras personas. O si hay algunos principios sobre el uso del actor.