Estoy tratando de construir un rastreador web con NodeJS. Estoy debatiendo cuál es la forma más eficiente de implementar el rastreador para la escala y la gran cantidad de solicitudes.
Supongamos que solo enviamos 1 solicitud para rastrear una página web y todas las URL dentro de ella, y repitamos el proceso hasta que se rastreen X profundidad o Y URL.
Se me ocurrieron 2 opciones de diseño (worker-threads vs event loop):
Una cola que contiene las direcciones URL. Para cada URL en la cola, creo un subproceso de trabajo (de un grupo) para ejecutar la tarea de rastreo y cada vez que veo un enlace, se agregará a la cola.
Use el bucle de eventos nativo, de modo que para cada URL en la página HTML ejecutaré la misma función asíncrona de forma recursiva
También planeo leer las páginas HTML como un flujo. ¿Cuál es mejor en términos de rendimiento?
También me gustaría saber si cada subproceso de trabajo tiene su propio ciclo de eventos.