A typical ticketing system that is designed for micro services environment with highly scalable and concurrent needs.
Kiosk designed by scalability and ease of use in mind, so we chose nats as message bus because of its modern distributed patterns. Every kiosk node listens to all subjects but in queue grouped manner, so the requests will distribute between different nodes. The message protocol is typical JSON format, so it can be used by all nats clients.
For more information about subject names and request/response models see Wiki pages.
The requirements to test and build the project are as follows:
Requirement | Version |
---|---|
go | 1.15 |
postgres | 11 |
nats | 2.1 |
To prepare your environment for next steps first run:
./scripts/setup.sh
To build an executable instance of the project, use:
./scripts/build.sh
To run tests you can use the test.sh script (Ensure Docker is up and running):
./scripts/test.sh
To build a docker image (Images also available on Docker Hub)
docker build -t image:tag .
./kiosk-linux-[version] --config path/to/kiosk.json
starts the project, easily!
See configs/kiosk.json
for an example configuration.
This project has prometheus metrics exporter that can be scraped by any prometheus server instance on /v1/metrics
endpoint.