Данное приложение реализует систему мониторинга метрик с использованием Apache Kafka для отправки и потребления данных. Система состоит из двух микросервисов: Metrics Producer и Metrics Consumer, которые отправляют и обрабатывают метрики приложения. Эти данные сохраняются в базу данных и доступны через REST API.
Полный текст задания
Цель:
Создать систему мониторинга, которая будет отслеживать работу различных компонентов вашего приложения с помощью Spring Kafka. Эта система будет включать в себя Producer для отправки метрик, Consumer для их обработки и анализа, а также REST API для просмотра метрик.
Общая архитектура системы:
Producer Service:
Создать микросервис "Metrics Producer", который будет отслеживать и собирать метрики работы приложения и отправлять их в Kafka топик "metrics-topic".
Реализовать следующие API для взаимодействия с микросервисом:
POST /metrics: Отправка метрик работы приложения в формате JSON. Метрики могут включать информацию о производительности, использовании ресурсов, ошибках и т. д.
Consumer Service:
Создать микросервис "Metrics Consumer", который будет принимать метрики из Kafka топика "metrics-topic" и анализировать их для выявления проблем и трендов.
Реализовать обработку метрик и вывод статистики в логи или базу данных для последующего анализа.
REST API:
Реализовать REST API в микросервисе "Metrics Consumer" для просмотра метрик.
GET /metrics: Получение списка всех метрик.
GET /metrics/{id}: Получение конкретной метрики по ее идентификатору.
Критерии успешного выполнения:
Микросервисы должны успешно обмениваться данными через Kafka и обеспечивать сбор и анализ метрик работы приложения.
API должно быть хорошо спроектировано, документировано и соответствовать принципам RESTful.
Система должна быть масштабируемой, надежной и обладать высокой производительностью.
Должна быть предоставлена документация, объясняющая архитектуру системы, конфигурацию Kafka, а также инструкции по запуску и использованию системы.
Проект использует следующие технологии и инструменты:
- Язык программирования: Java 17
- Автоматизация сборки: Maven
- Фреймворк: Spring Boot
- Сообщения: Apache Kafka
- База данных: PostgreSQL
- Миграция данных: Liquibase
- Документация API: Swagger/OpenAPI
- Metrics Producer отправляет метрики приложения в Kafka.
- Metrics Consumer принимает сообщения из Kafka, сохраняет метрики в базу данных и предоставляет REST API для просмотра всех или отдельных метрик.
-
Клонируйте репозиторий:
git clone https://github.com/axma331/SpringKafka.git cd SpringKafka -
Настройте базу данных PostgreSQL в файле
application.properties:spring.datasource.url=jdbc:postgresql://localhost:5432/db_t1 spring.datasource.username=postgres spring.datasource.password=postgre
-
Запустите Kafka и Zookeeper с помощью Docker:
docker-compose up
-
Соберите и запустите оба микросервиса:
- Metrics Producer:
cd metrics-producer mvn spring-boot:run - Metrics Consumer:
cd metrics-consumer mvn spring-boot:run
- Metrics Producer:
-
Получение всех метрик:
GET /api/v1/metric
-
Получение метрики по ID:
GET /api/v1/metric/{id}
Для тестирования и просмотра API-документации используйте Swagger UI:
- Metrics Producer: http://localhost:8080/swagger-ui.html
- Metrics Consumer: http://localhost:8081/swagger-ui.html
Для отправки метрики в топик Kafka:
POST /api/v1/send-metricПроект использует Liquibase для управления схемой базы данных. Все миграции описаны в файлах db/changelog/.
Разработчик: Ismailov