es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Grupo Anidado, Remoto, Round-Robin en Akka.NET

He comenzado a trabajar con Akka.NET y logré implementar una aplicación que se autoimplementa en un sistema remoto con múltiples instancias (usando un enrutador de grupo de equilibrio de carga con 5 instancias). Sin embargo, ahora quiero poder vincular varios servidores juntos. Actualmente tengo esto funcionando:

Actor Local --> Actor Remoto --> 5 instancias

Sin embargo, estoy intentando hacer algo como esto:

            /---> Actor Remoto #1 (server1.domain.com) --> 5 instancias
Actor Principal < ---> Actor Remoto #2 (server2.domain.com) --> 5 instancias
            \---> Actor Remoto #3 (server3.domain.com) --> 5 instancias

Cuando el Actor Principal tiene un mensaje que debe procesarse, lo envía al Actor Remoto 1, 2 o 3 de manera equitativa. El actor remoto que recibe el mensaje luego lo envía a una de las instancias, también de manera equitativa.

Según lo que he leído, parece que necesito implementar un clúster. Sin embargo, no pude averiguar cómo implementarlo con este tipo de procesamiento de equilibrio de carga anidado a partir de la documentación que encontré. Sonaba más como una red descentralizada donde un mensaje del Actor Principal se pasaría al Actor Remoto 1, 2 y 3, lo cual definitivamente no es lo que quiero.

¿Hay alguna manera de implementar esto con los NuGets estándar de Akka.NET o debo implementar mi propio código de equilibrio de carga en el Actor Principal para enviar un mensaje a cada uno de los Actores Remotos individualmente y luego permitirles hacer su propio equilibrio de carga estándar?

Cualquier ayuda o sugerencia sería muy apreciada, ya que soy relativamente nuevo en el uso de esta biblioteca. Muchas gracias de antemano.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para lograr este tipo de procesamiento en cascada, se puede utilizar la función de agrupación de Akka.NET. La agrupación permite a los actores comunicarse y compartir mensajes entre diferentes máquinas en una red.

    El primer paso sería configurar todos los servidores para formar un cluster. Esto se puede lograr estableciendo un archivo de configuración compartido o especificando la configuración programáticamente.

    Una vez formado el cluster, el Actor Principal puede enviar mensajes a un actor específico o a un grupo de actores, lo cual se puede hacer utilizando la selección de actores. La selección de actores puede basarse en roles o categorías específicas definidas para cada actor.

    Cada Actor Remoto puede tener su propio enrutador de grupo round-robin para las instancias de las que es responsable. Esto se puede lograr definiendo un enrutador de grupo en la configuración del actor y especificando el número de instancias y el tipo de enrutador (en este caso, round-robin).

    En general, con la agrupación, cada Actor Remoto puede comunicarse entre sí y el Actor Principal puede enviar mensajes a actores específicos o a un grupo de actores según su categoría o roles. Los propios actores pueden tener sus propios enrutadores de grupo round-robin para las instancias que gestionan.

Comments are closed.