Example of analytics platform that tracks user check-ins on specific locations and provides real-time dashboards backed by Quarkus, Postgres, Kafka-Streams, and RocksDB following reactive principles.
The system represents a microservices architecture and some common patterns related to microservices are showed like:
- When and how to use Kafka, Kafka Streams and Kafka State Stores.
- How to communicate with other microservices via HTTP in a resilient way.
- How to compose multiple asynchronous computations and in general how to implement service in a reactive manner from end to end.
The platform consists of multiple microservices:
- Event Generator is used to produce random events that represent user data. More details here.
- Ingestion Service is responsible for ingestion and aggregation of user data. More details here.
- Location Service is a service that contains details about locations. More details here.
- Query Service is used to query aggregated data and location details. More details here.
- Dashboad UI can be used to retrieve data from Query Service. More details here
- Git pull and cd into
./ops
directory - Run this command:
docker network create kafka-network
- Run UI:
./run-ui.sh
- Run PostgreSQL:
./run-pg.sh
- Run Kafka and Zookeper:
./run-kafka.sh
make sure that kafka is started properly, if not just kill process(ctr+c) and run script again - Run Event Generator:
./run-generator.sh
- Finally run all services with this command:
./run-services.sh
- Web UI is available at http://localhost:3000 or you can use query-service directly via HTTP