In this application, tried to put in some of my learning of spring-micro-service. The challenges with spring-micro-services are
- Bounded Context
- Configuration Management
- Dynamic Scale-Up and Scale-down
- Visibility (Centralised log) and Monitoring
- Fault Tolerance
In order to resolve the above challenges, I have tried to implement
-
Configuration Management: Used the Spring Cloud Config Service - See repo
-
Dynamic Scale-up and Scale-Down: To achieve this feature, I've used Feign for easier rest clients Ribbon for client side load balancing Eureka for Naming server See repo1 repo2 repo3
-
Visibility (Centralised log): To achieve this feature, I have tried both ELK stack and Zipkin Distributed Tracing Monitoring: Used Netflix API Gateway ** Zuul** See repo
-
Fault Tolerance: Used Netflix API Hystrix See repo
- Used the
spring cloud bus
andRabbitMQ
feature Spring Cloud Bus links nodes of a distributed system with a lightweight message broker. This can then be used to broadcast state changes (e.g. configuration changes) or other management instructions.