/QueuedStorage

Group of microservices that implement remote storage based on Kafka queues.

Primary LanguageJava

Удаленное KV-хранилище на очередях

Хранилище ключ+значение, доступ к которому осуществляется через очереди Kafka.

Инфраструктура

Список микросервисов

  • Postgres - база данных, где хранятся результаты запросов к хранилищу
  • PG admin - интерфейс для взаимодействия с БД (необязательно)
  • Zookeeper - сервис для обнаружения служб, связанных с Kafka
  • Kafka broker - брокер сообщений и партиций
  • Kafka UI - интерфейс для взаимодействия с Kafka (необязательно)
  • Topics creator - стартовый генератор топиков (для регулярной работы инфраструктуры не нужен)
  • Storage - хранилище
  • Sender - сервис, взаимодействующий с хранилищем через очереди

Архитектура

image

Принцип работы

Клиент приходит через HTTP сервису Sender. Указывает операцию, которую надо совершить с хранилищем. Ему возвращают идентификатор операции. Который является id операции в таблице результатов в БД. Далее операция упаковывается в сообщение и улетает брокеру. Тот переслывает сообщение сервису для работы с хранилищем. Тот выполняет операцию. И результат кладет в БД. В строку с идентификатором операции. Тем временем клиент может делать запросы к Sender. И проверять состояние своей операции.

Развертывание

  1. Устанавливаем java 17 (рекомендуется eclipse-temurin-17), maven, docker
  2. Клонируем репозиторий и в корне выполняем: mvn clean package
  3. Для развертывания инфраструктуры выполняем: docker compose up