Definir el formato de intercambio de mensajes entre el contenedor coordinador y los contenedores worker para ejecutar el algoritmo Mandelbrot distribuido en Rust.
Este mensaje es enviado por el worker al conectarse al coordinador.
{
"type": "register",
"worker_id": "mandel-worker-01",
"host_id": "worker-01"
}
El coordinador responde al registro exitoso del worker.
{
"type": "ack",
"message": "worker registered"
}
El coordinador envía al worker el bloque de filas que debe calcular.
{
"type": "task",
"task_id": 1,
"start_row": 0,
"end_row": 99,
"width": 800,
"height": 800,
"max_iter": 1000,
"x_min": -2.0,
"x_max": 1.0,
"y_min": -1.5,
"y_max": 1.5
}
El worker devuelve los valores calculados para el bloque asignado.
{
"type": "result",
"task_id": 1,
"worker_id": "mandel-worker-01",
"start_row": 0,
"end_row": 99,
"pixels": [0, 1, 3, 8, 12, 255]
}
Mensaje opcional para indicar que el worker terminó la tarea.
{
"type": "done",
"task_id": 1,
"worker_id": "mandel-worker-01"
}
Mensaje enviado en caso de falla durante el procesamiento.
{
"type": "error",
"worker_id": "mandel-worker-01",
"task_id": 1,
"message": "failed to compute assigned rows"
}
El protocolo está diseñado para ser implementado en Rust mediante serde y serde_json.