Демо: https://demo.example.com
Коротко: Сервис управления кошельками пользователей и транзакциями для микросервисной платформы аукциона. Предоставляет REST API на микросервисной архитектуре для создания пользователей, управления балансом и выполнения транзакций.
flowchart LR
Client[Пользователь / UI]
subgraph Gateway
GW[gateway]
end
subgraph Services
Auction[auction-service]
Notification[notification-service]
Wallet[user-wallet-service]
end
Client -->|HTTP| GW
GW -->|HTTP proxy / auth| Auction
GW -->|HTTP proxy / auth| Wallet
Auction -->|produce| Kafka[(Kafka topic: bids)]
Notification -->|consume| Kafka
Auction -->|SQL| AuctionDB[(auction DB)]
Wallet -->|SQL| WalletDB[(wallet DB)]
Notification -->|SQL| NotifDB[(notification DB)]
Auction -->|HTTP / RPC| Wallet
NoteRight[Deploy: Docker Compose / Kubernetes]
NoteRight --> GW
NoteRight --> Auction
NoteRight --> Wallet
NoteRight --> Notification
Краткая легенда:
gateway— обратный прокси / аутентификация, маршрутизация запросов к сервисам.auction-service— логика торгов (создание лотов, ставки), публикует события в Kafka.notification-service— потребляет события из Kafka, формирует уведомления.user-wallet-service— управление кошельками, авторизация, операции с балансом.- Каждому сервису — своя БД (SQL). Межсервисное взаимодействие — HTTP + сообщения через Kafka.
- Развёртывание:
docker-compose.yaml/ контейнеры.
| Service | Port | Description |
|---|---|---|
| Gateway | 8080 | API Gateway with JWT auth, rate limiting, reverse proxy |
| Auction Service | 8081 | Lot management, bidding logic, auction completion |
| User-Wallet Service | 8082 | User authentication, wallet & balance management |
| Notification Service | 8083 | Kafka consumer, notification delivery |
Ключевые файлы (пример):
- auction-service/internal/kafka/producer.go
- notification-service/internal/kafka/consumer.go
- gateway/internal/proxy/proxy.go
- auction-service/internal/config/database.go
- user-wallet-service/internal/transport/user-handlers.go
- docker-compose.yaml
- Склонировать репозиторий:
git clone git@github.com:warkaz16/auction.git
cd auction- Создать переменные окружения:
cp .env.example .env
# Edit .env and set JWT_SECRET- Запуск всез серверов:
docker-compose up --build- Доступ к сервисам:
- API Gateway: http://localhost:8080
- Kafka UI: http://localhost:8085
- Перед запуском убедитесь, что настроены переменные окружения для подключения к базе и Kafka (см. internal/config).