Este proyecto es una simulación de una serie de microservicios diseñados para replicar la estructura de una compañía. Está enfocado en el uso de componentes de Spring Cloud para demostrar patrones y buenas prácticas en el desarrollo de microservicios.
- Descripción
- Arquitectura
- Componentes Principales
- Requisitos Previos
- Instalación
- Patrones Implementados
- Logs con ELK Stack
- Contribuciones
El objetivo de este proyecto es proporcionar un entorno práctico para trabajar con microservicios y explorar conceptos avanzados de Spring Cloud. Los microservicios están diseñados para interactuar entre sí utilizando herramientas modernas de balanceo de carga, descubrimiento de servicios y resiliencia.
La arquitectura incluye los siguientes componentes:
- API Gateway: Gestiona las solicitudes entrantes y realiza el balanceo de carga entre los microservicios.
- Config Server: Centraliza las configuraciones de todos los microservicios, permitiendo actualizaciones dinámicas.
- Service Registry: Registra y descubre los microservicios dinámicamente.
- Microservicio de Departamentos: Proporciona APIs para gestionar departamentos y se comunica con:
- Microservicio de Empleados: API para gestionar los datos de los empleados, consumida por el microservicio de departamentos.
- Implementa balanceo de carga.
- Maneja rutas y filtros personalizados.
- Almacena configuraciones centralizadas.
- Compatible con Git para versionado.
- Basado en Spring Cloud Netflix Eureka.
- Registra todos los microservicios para facilitar su descubrimiento.
- Comunicación vía HttpExchange con el microservicio de empleados.
- Implementación de patrones de resiliencia como Circuit Breaker, Retry, Rate Limiter, Time Limiter y Bulkhead.
- Proporciona operaciones CRUD básicas.
- Java: JDK 17 o superior.
- Maven: Para construir los proyectos.
- Docker: Para ejecutar el ELK stack y otros servicios.
-
Clona este repositorio:
-
Construye los microservicios con Maven:
-
Levanta el entorno Docker para ELK:
- Circuit Breaker: Gestiona fallos en las comunicaciones con servicios externos.
- Retry: Reintenta solicitudes fallidas automáticamente.
- Rate Limiter: Limita la cantidad de solicitudes permitidas en un periodo de tiempo.
- Time Limiter: Define tiempos máximos de respuesta para evitar bloqueos.
- Bulkhead: Asegura que los recursos estén distribuidos entre diferentes tareas para evitar saturaciones.
- Gestionado por el API Gateway utilizando rutas personalizadas.
- Actualización dinámica de propiedades mediante el Config Server.
Los microservicios están configurados para enviar logs al ELK stack, que incluye:
- Elasticsearch: Almacenamiento y búsqueda de logs.
- Logstash: Procesamiento de logs.
- Kibana: Visualización de logs y métricas.
Para acceder a Kibana:
- Abre tu navegador y accede a
http://localhost:5601. - Configura un índice para visualizar los logs enviados por los microservicios.
¡Contribuciones son bienvenidas! Si tienes ideas o encuentras problemas, abre un issue o envía un pull request.