This is an example to follow Characteristics of Reactive Systems
- Responsive: systems respond in a timely manner
- Resilient: systems stay responsive in the face of failure
- Elastic: a architecture remains responsive under varying workload
- Message driven: systems rely on asynchronous message-passing to establish a boundary between components that ensures loose coupling, isolation, location transparency, and provides the means to delegate errors as messages
More detail at here: Reactive Manifesto
- Run Discovery-Service
- Run Master-Service
- Run Log-Service
- Run Worker-Service
- Make a HTTP GET Request: http://localhost:9080/test-log?message=Hello-World -> test LogService
- Make a HTTP GET Request: http://localhost:9080/test-worker?range=1-10 -> test WorkerService
For scaling, you can clone WorkerService/LogService and run it on another port. It will automatically register to DiscoveryService and MasterService will automatically detect new WorkerService/LogService Make other HTTP GET Request to test scaling.