In this project, our primary focus is to explore the core concepts of microservices architecture, leveraging the robust capabilities of the Spring Boot framework in tandem with the Spring Cloud project and associated tools. At the heart of our endeavor lies the demonstration of fundamental microservice principles within the context of a School Management application. Throughout our journey, we delve into a myriad of essential concepts, encompassing diverse areas such as service discovery (utilizing Netflix Eureka), proficiently handling rest clients through openfeign, RestTemplate, Java Reactive WebClient, and GraphQL.
Additionally, we delve into advanced topics including distributed tracing, metrics collection, configuration management with config servers, API gateway implementation, and the circuit breaker pattern integrated with resilience4j. Moreover, our exploration extends to incorporate pivotal elements like message brokering with RabbitMQ, event streaming utilizing Kafka, OAuth2 authentication for secure access, GraalVM for building native images, Swagger OpenAPI documentation for REST endpoints, and much more. Through this comprehensive endeavor, we aim to gain a profound understanding of microservices architecture and its practical application, equipping ourselves with the tools and knowledge necessary to architect resilient and scalable distributed systems.
The Docker Zipkin project is able to build docker images, provide scripts and a docker-compose.yml for launching pre-built images. The quickest start is to run the latest image directly:
docker run -d -p 9411:9411 openzipkin/zipkin
Add a new service
spring init --java-version=21 \
--build=gradle \
--packaging=jar \
--type=gradle-project \
--artifact-id=school-service \
--group-id=com.github.eiakojime \
--dependencies=actuator,data-jdbc,postgresql,web \
--extract school-service
PROJECT_ROOT =
- Docker-compose
- Fault tolerance with Resilence4j
- GraalVM
- OpenFeign
- PostgreSQL
- Rest Template with load balancing
- Spring Actuator
- Spring cloud Gateway
- Spring cloud Config Server
- Spring GraphQL
- Spring cloud Eureka
- Zipkin distributed tracing
- Visit Mark down badges to view cool badges for your repos
- Visit Spring CLoud Netflix to learn more about Eureka
- Visit Zipkin Quick start to learn more about zipkin server
- Visit Micrometer.io to learn more on working with metrics
- Visit https://resilience4j.readme.io/ to learn more about Resilience4j
- Visit https://cloud.spring.io/spring-cloud-gateway/reference/html/ learn more about spring cloud gateway
- Learn more about RabbitMQ at https://www.rabbitmq.com/