Git Product home page Git Product logo

bardolog1 / microservices-project-spring Goto Github PK

View Code? Open in Web Editor NEW
7.0 1.0 1.0 23.02 MB

Este proyecto consiste en una aplicación basada en microservicios desarrollada con Spring Boot. La arquitectura se compone de tres microservicios: Products, Inventory y Orders.

Java 100.00%
docker kafka keycloak lombok mysql postgresql resilience4j spring-boot spring-cloud spring-gateway spring-security grafana java jwt-token netflix-eureka prometheus webflux zipkin zookeeper

microservices-project-spring's Introduction

Spring Boot Microservices Project

flow.gif

Overview

Este proyecto consiste en una aplicación basada en microservicios desarrollada con Spring Boot. La arquitectura se compone de tres microservicios: Products, Inventory y Orders, cada uno implementando Lombok. Cada microservicio tiene su propia base de datos PostgreSQL o MySQL, alojada en contenedores Docker.

Comunicación Microservicio a Microservicio

La comunicación sincronizada entre el microservicio de órdenes y el microservicio de inventario se realiza mediante WebClient (WebFlux). Este enfoque permite consultar el inventario antes de crear una orden y está respaldado por Resilience4j mediante un "Circuit Breaker".

Eventos y Kafka

Al crear una orden, se emite un evento en un topic de un broker, el cual se encuentra en un clúster Apache Kafka gestionado por Zookeeper. El componente Notification Service de Spring Boot se suscribe al "topic" en Kafka y permanece allí a la escucha de eventos emitidos por el microservicio de Orders.

Orquestación y Acceso Externo

El sistema completo está orquestado mediante Netflix Eureka para el descubrimiento de servicios, con un API Gateway para el acceso externo.

Seguridad

La autenticación se maneja mediante Spring Security con tokens JWT y Keycloak, este ultimo proporciona facilidad a la hora de querer crear usuarios y roles de usuario, proporcionando una capa segura para la aplicación y facil de gestionar.

Monitoreo y Seguimiento

La monitorización de microservicios, el seguimiento de logs y trazas se facilita mediante Zipkin, Prometheus y Grafana, proporcionando métricas clave para mejorar el rendimiento del sistema.

Uso de Lombok

Lombok se ha integrado para reducir la verbosidad del código, mejorar la legibilidad y facilitar el mantenimiento del código fuente.

Prerequisitos

Debes tener instalados los siguientes elementos en tu entorno de desarrollo:

Clonación del Repositorio

  git clone https://github.com/bardolog1/Microservices-Project-Spring.git
  cd Microservices-Project-Spring

Configuración de Bases de Datos

Inicia las bases de datos con Docker:

  docker-compose up -d db-products db-inventory db-orders db-keycloak

Iniciar todos los contenedores

Inicia Keycloak, Zookeeper, Kafka, Zipkin, Prometheus & Grafana

  docker-compose up -d keycloak zookeeper kafka zipkin prometheus grafana

Espera a que Keycloak se inicie y luego configura realms, clients, usuarios y roles de usuario según sea necesario.

microservices-project-spring's People

Contributors

bardolog1 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

rainsunon

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.