S42-Core Cluster Clase
- Documentación de Cluster
Documentación de Cluster
La clase Cluster
forma parte del paquete s42-core
y permite la creación y gestión de procesos paralelos utilizando trabajadores de Bun. Simplifica la distribución de tareas en aplicaciones que necesitan utilizar múltiples CPUs o manejar procesos independientes.
Propósito
La clase Cluster
:
- Crea y gestiona múltiples trabajadores de manera eficiente.
- Soporta mensajes bidireccionales entre el proceso principal y los trabajadores.
- Incluye soporte para reinicios automáticos de los trabajadores en modo de desarrollo (
--watch
). - Maneja errores y proporciona una API simple para integración.
Instalación
Instala el paquete s42-core
:
Uso
Ejemplo básico
Constructor
props.name
(string): Nombre del clúster.props.maxCPU
(number): Número máximo de CPUs a utilizar.props.watchMode
(boolean, opcional): Habilita reinicios automáticos de los trabajadores en modo de desarrollo (--watch
).props.args
(string[], opcional): Array de argumentos que se pasan al script ejecutado por los trabajadores.
Métodos clave
start(file: string, fallback: (err: Error) => void): void
Inicia el clúster y crea los trabajadores.
file
(string): Archivo que será ejecutado por los trabajadores.fallback
(function): Callback que se ejecuta si ocurre un error al iniciar el clúster.
onWorkerMessage(callback: (message: string) => void): void
Registra un callback para manejar mensajes enviados por los trabajadores al proceso principal.
sendMessageToWorkers(message: string): void
Envía un mensaje a todos los trabajadores activos.
getCurrentFile(): string
Devuelve el archivo que actualmente está siendo ejecutado por los trabajadores.
getCurrentWorkers(): Array<ReturnType<typeof spawn>>
Devuelve una lista de los trabajadores activos.
killWorkers(): void
Detiene de forma segura todos los trabajadores activos.
Características
- Paralelismo: Utiliza todos los CPUs disponibles o un número especificado de ellos.
- Mensajería: Soporta mensajes bidireccionales entre el proceso principal y los trabajadores.
- Modo desarrollo: Reinicios automáticos de los trabajadores con la opción
--watch
. - Argumentos personalizados: Permite pasar argumentos adicionales desde la línea de comandos a los trabajadores.
- Manejo de errores: Proporciona callbacks para manejar errores durante la inicialización.
- Integración simple: Diseñado para integrarse fácilmente en aplicaciones.
Ejemplo completo
Ventajas
- Modularidad: Diseñado para manejar procesos paralelos de manera sencilla.
- Eficiencia: Maximiza la utilización de recursos del sistema.
- Flexibilidad: Configurable para diferentes entornos (desarrollo/producción).
- Simplicidad: API intuitiva y bien documentada.
Licencia
Este proyecto está licenciado bajo la licencia MIT. Consulta el archivo LICENSE para más detalles.