Хранилище ключ+значение, доступ к которому осуществляется через очереди Kafka.
- Postgres - база данных, где хранятся результаты запросов к хранилищу
- PG admin - интерфейс для взаимодействия с БД (необязательно)
- Zookeeper - сервис для обнаружения служб, связанных с Kafka
- Kafka broker - брокер сообщений и партиций
- Kafka UI - интерфейс для взаимодействия с Kafka (необязательно)
- Topics creator - стартовый генератор топиков (для регулярной работы инфраструктуры не нужен)
- Storage - хранилище
- Sender - сервис, взаимодействующий с хранилищем через очереди
Клиент приходит через HTTP сервису Sender. Указывает операцию, которую надо совершить с хранилищем. Ему возвращают идентификатор операции. Который является id операции в таблице результатов в БД. Далее операция упаковывается в сообщение и улетает брокеру. Тот переслывает сообщение сервису для работы с хранилищем. Тот выполняет операцию. И результат кладет в БД. В строку с идентификатором операции. Тем временем клиент может делать запросы к Sender. И проверять состояние своей операции.
- Устанавливаем java 17 (рекомендуется eclipse-temurin-17), maven, docker
- Клонируем репозиторий и в корне выполняем:
mvn clean package
- Для развертывания инфраструктуры выполняем:
docker compose up