Описание проекта
Microservices-MariaDB - это учебный проект на Spring Boot, состоит из 3 микросервисов. Они обмениваются между собой сообщениями через Apache Kafka, WebSockets и FeignClient.
Схема взаимодействия:
MC1 - microservice-mariadb
. Он создает сообщение в формате JSON следующего формата:
{
"id" : 1,
"session_id": 1,
"MC1_timestamp": "datetime",
"MC1_timestamp": "datetime",
"MC1_timestamp": "datetime",
"end_timestamp": "datetime"
}
MC1
записывает в поле MC1_timestamp
текущее время и отправляет сообщение в MC2
через WebSockets/StompCLient
.
MC2
принимает сообщение и записывает в поле MC2_timestamp
текущее время, отправляет сообщение в MC3
через Apache Kafka
.
MC3
принимает сообщение, записывает в поле MC3_timestamp
текущее время, отправляет сообщение в MC1
через FeignClient
запросом POST
.
MC1
принимает сообщение, записывает в поле end_timestamp
текущее время и сохраняет сообщение в БД MariaBD
.
Далее цикл повторяется в течение заданного временного интервала (по умолчанию 10 секунд).
Начало взаимодействия микросервисов выводится на консоль в MC1
.
Завершение взаимодействия выводится на консоль в MC1
с указанием следующих параметров:
- время взаимодействия;
- количество сообщений, сгенерированных во время взаимодействия.
Сервисы упакованы в докер-контейнеры.
Докер-хаб: https://hub.docker.com/r/alex90bar/microservices/tags
Скрипты для запуска сервисов и БД:
docker-compose up -d
Для запуска сервисов, БД и окружения необходим docker-compose.yaml
, он находится в корневой папке репозитория. Перед запуском его необходимо поместить в папку, из которой выполняется команда терминалом.
Время взаимодействия можно задать через переменную TIME_SEC
в файле docker-compose.yaml
в сервисе MC1
.
Маппинг сущностей выполняется через MapStruct
.
В проекте также используется Lombok
для упрощения процесса разработки и снижения количества кода.
Порт MC1
: 8082.
Порт MC2
: 8085.
Порт MC3
: 8088.
Список эндпоинтов:
Endpoint | Description | Mapping |
---|---|---|
http://localhost:8082/start | Запуск обмена сообщениями | GET |
http://localhost:8082/stop | Досрочная остановка взаимодействия | GET |
http://localhost:8082/messages | Получить список всех записанных сообщений из БД | GET |