Микросервисный проект, демонстрирующий гибридную архитектуру:
синхронное взаимодействие сервисов через REST и асинхронные уведомления через Kafka.
| Сервис | Назначение | Порт |
|---|---|---|
| Order Service | Управление заказами. Синхронно взаимодействует с Inventory и Payment, публикует события в Kafka. | 8082 |
| Inventory Service | Проверка и резервирование товаров. | 8081 |
| Payment Service | Обработка оплаты. Возвращает результат в Order Service. | 8083 |
| Notification Service | Асинхронно получает события заказов из Kafka и отправляет уведомления. | 8086 |
| Kafka | Шина событий для Notification Service. | 9094 |
| Nginx Gateway | Прокси для всех REST API и Swagger UI. | 8000 |
| Swagger UI | Единая точка документации API. | 8090 |
- Java 21, Spring Boot 3.5.6
- Spring Web, JPA, Lombok, Mapstruct
- Spring Kafka
- PostgreSQL (для каждого сервиса своя БД)
- Docker Compose, Nginx, Swagger UI
-
Создание товаров
Пользователь или администратор добавляет новые позиции черезInventory Service.
Все товары сохраняются в базеInventory DB. -
Создание заказа
Клиент оформляет заказ черезOrder Service.
Сервис синхронно обращается кInventory Service, чтобы:- проверить наличие товаров;
- зарезервировать нужное количество.
После успешной проверки создаётся заказ со статусомCREATEDи временем истечения (TTL).
-
Оплата заказа
Клиент оплачивает заказ.
Order ServiceвызываетPayment Service, который возвращает результат оплаты.
Если оплата прошла успешно:- заказ получает статус
COMPLETED; - зарезервированные товары списываются из
Inventory Service; - публикуется событие
OrderEventв Kafka.
- заказ получает статус
-
Асинхронное уведомление
Notification Serviceподписан на топикorder-events.
После получения события формирует и отправляет уведомление пользователю (например, в Telegram). -
Автоматическая отмена неоплаченных заказов
Если заказ не был оплачен вовремя — встроенный шедулер в Order Service:- отменяет заказ;
- снимает резервирование товаров в
Inventory Service;
| Путь | Назначение |
|---|---|
/order-api/** |
Order Service |
/inventory-api/** |
Inventory Service |
/payment-api/** |
Payment Service |
/notification-api/** |
Notification Service |
/swagger/ |
Swagger UI |
Swagger доступен по адресу:
👉 http://localhost:8000/swagger/
docker compose up --build