myklorejs
v0.0.1
Published
Orquestador de microservicios con retry inteligente, circuit breakers y aprendizaje de patrones de fallo.
Maintainers
Readme
MykloreJS: Orquestador de Microservicios
MykloreJS es una librería robusta y flexible diseñada para simplificar la comunicación y gestión de microservicios. Proporciona un sistema automatizado para manejar la interacción entre servicios, incorporando patrones de resiliencia como reintentos inteligentes y Circuit Breakers, además de un módulo de aprendizaje que optimiza las rutas de comunicación basándose en patrones de fallo.
Características Principales
- Comunicación Automatizada: Gestiona la comunicación entre tus microservicios de manera eficiente y transparente.
- Retry Inteligente: Reintenta automáticamente las operaciones fallidas con una estrategia de retroceso exponencial, mejorando la robustez del sistema.
- Circuit Breaker: Implementa el patrón Circuit Breaker para prevenir cascadas de fallos, aislando servicios problemáticos y permitiendo su recuperación controlada.
- Aprendizaje de Patrones de Fallo: Un módulo inteligente que aprende de los fallos pasados para optimizar futuras rutas de comunicación y anticipar problemas.
- Fácil Integración: Diseñado para ser fácilmente integrable en proyectos basados en Node.js y TypeScript.
Instalación
Para instalar MykloreJS en tu proyecto, utiliza npm:
npm install myklorejsUso
Inicialización del Orquestador
import { ServiceOrchestrator } from 'myklorejs';
const orchestrator = new ServiceOrchestrator();Llamada a un Servicio
Utiliza el método callService para invocar tus microservicios. MykloreJS se encargará automáticamente de los reintentos y la lógica del Circuit Breaker.
async function callMyService() {
const serviceName = 'userService';
const endpoint = '/users/123';
const data = { userId: '123' };
try {
const response = await orchestrator.callService(serviceName, endpoint, data);
console.log(`Respuesta del servicio ${serviceName}:`, response);
} catch (error) {
console.error(`Error al llamar al servicio ${serviceName}:`, error.message);
}
}
callMyService();Configuración Personalizada (Opcional)
Puedes personalizar el comportamiento del Circuit Breaker y el Retry al inicializar el ServiceOrchestrator o directamente en los módulos si los importas de forma individual.
import { ServiceOrchestrator, CircuitBreakerModule, RetryModule } from 'myklorejs';
// Configuración del Circuit Breaker
const customCircuitBreaker = new CircuitBreakerModule({
failureThreshold: 5, // Número de fallos antes de abrir el circuito
resetTimeout: 10000, // Tiempo en ms para pasar a HALF_OPEN
successThreshold: 3 // Número de éxitos en HALF_OPEN para cerrar el circuito
});
// Configuración del Retry
const customRetryModule = new RetryModule(orchestrator.communicationModule); // Necesita una instancia de CommunicationModule
// Puedes inyectar tus módulos personalizados si es necesario
// const customOrchestrator = new ServiceOrchestrator(customCircuitBreaker, customRetryModule, ...);Estructura del Proyecto
El proyecto sigue una estructura modular, facilitando la comprensión y extensión:
myklorejs/
├── src/
│ ├── communicationModule.ts # Manejo de la comunicación básica entre servicios
│ ├── retryModule.ts # Lógica de reintentos inteligentes
│ ├── circuitBreakerModule.ts # Implementación del patrón Circuit Breaker
│ ├── failureLearningModule.ts # Módulo para aprender de patrones de fallo
│ ├── serviceOrchestrator.ts # El orquestador principal que integra los módulos
│ └── index.ts # Archivo de exportación principal de la librería
├── dist/ # Salida de la compilación de TypeScript
├── tests/ # Pruebas unitarias e de integración
├── package.json
├── tsconfig.json
├── .eslintrc.js
├── .prettierrc.js
└── README.mdContribución
¡Agradecemos cualquier contribución! Si encuentras un error o tienes una sugerencia de mejora, no dudes en abrir un issue o enviar un pull request.
Licencia
Este proyecto está bajo la licencia MIT. Consulta el archivo LICENSE para más detalles.
