6.6 KiB
🚀 Quickstart - Cubenet Backend
Структура архитектуры (готовая к использованию!)
REST Client → API Gateway (8000) ──gRPC→ API (8001) ──gRPC→ Microservices (13000+)
↓
User Service (13001)
🎯 Три простых шага для запуска
Шаг 1: Откройте три терминала
Терминал 1 - User Service (gRPC на порту 13001):
cargo run -p user_service
Терминал 2 - API (на порту 8001):
cargo run -p api
Терминал 3 - API Gateway (REST + Swagger на порту 8000):
cargo run -p api_gateway
✨ Доступ к API
📊 Swagger UI (интерактивная документация)
http://localhost:8000/swagger-ui
📋 OpenAPI JSON docs
http://localhost:8000/api-docs
🧪 Тестирование endpoints
Health Check:
curl http://localhost:8000/api/health
# Ответ: {"status":"OK"}
Получить пользователей:
curl http://localhost:8000/api/users
# Ответ: [{"id":1,"name":"Alice",...}, ...]
Создать пользователя:
curl -X POST http://localhost:8000/api/users \
-H "Content-Type: application/json" \
-d '{"name":"Charlie","email":"charlie@example.com"}'
📚 Документация
| Файл | Назначение |
|---|---|
| README.md | Главная документация |
| ARCHITECTURE.md | Подробная архитектура системы |
| MICROSERVICE_GUIDE.md | Создание новых микросервисов |
| PORT_ALLOCATION.md | Управление портами |
🛠️ Создание нового микросервиса
Быстро (5 минут)
# 1. Копировать шаблон
cp -r microservices/template_service microservices/my_service
# 2. Обновить Cargo.toml
sed -i 's/template_service/my_service/g' microservices/my_service/Cargo.toml
# 3. Добавить в Cargo.toml (workspace members):
# "microservices/my_service"
# 4. Выбрать порт (13002-14000)
# 5. Реализовать логику
# 6. Скомпилировать
cargo check
Подробнее см. MICROSERVICE_GUIDE.md
🔐 Порты (выделенные диапазоны)
| Компонент | Порт | Статус |
|---|---|---|
| API Gateway | 8000 | ✓ REST |
| API | 8001 | ✓ REST |
| User Service | 13001 | ✓ gRPC |
| Микросервисы | 13002-14000 | ✓ Доступны |
📦 Что входит в проект
✅ REST API - Axum веб-фреймворк
✅ Swagger UI - Автоматическая документация
✅ gRPC - Inter-service communication (Tonic)
✅ Proto Buffers - Типобезопасные структуры
✅ Microservices - User Service как пример
✅ Template - Шаблон для новых сервисов
✅ Logging - Встроенный Tracing
🐛 Отладка
Включить подробные логи
RUST_LOG=debug cargo run -p api_gateway
Проверить что порты свободны (Linux/Mac)
lsof -i :8000
lsof -i :13001
Проверить gRPC endpoints
grpcurl -plaintext localhost:13001 list
⚡ Полезные команды
# Проверить что всё компилируется
cargo check
# Собрать всё
cargo build
# Собрать оптимизированный релиз
cargo build --release
# Запустить тесты
cargo test
# Форматировать код
cargo fmt
# Проверить ошибки линтера
cargo clippy
🎓 Примеры использования
Пример 1: Вызвать gRPC User Service напрямую
# Если установлен grpcurl
grpcurl -plaintext \
-d '{}' \
localhost:13001 user.UserService/GetUsers
Пример 2: Создать Product Service
# 1. Копировать шаблон
cp -r microservices/template_service microservices/product_service
# 2. Создать proto файл
cat > shared_proto/proto/product.proto << 'EOF'
syntax = "proto3";
package product;
service ProductService {
rpc GetProducts(Empty) returns (ProductList);
}
message Empty {}
message Product { int32 id = 1; string name = 2; }
message ProductList { repeated Product products = 1; }
EOF
# 3. Обновить shared_proto/src/lib.rs
# 4. Обновить shared_proto/build.rs
# 5. Реализовать сервис на 13002
# 6. Скомпилировать и запустить
💡 Советы
- Используйте Swagger UI для тестирования - очень удобно
- Читайте логи - там видны все подключения и ошибки
- Proto files - это контракт между сервисами, храните их в
shared_proto - Порты - не забудьте обновить
PORT_ALLOCATION.mdпри добавлении нового сервиса - Логирование - используйте
tracing::info!()вместоprintln!()
❓ Часто задаваемые вопросы
Q: Какие требования для запуска?
A: Rust 1.70+ и Cargo. Всё остальное установится автоматически.
Q: Почему 13000-14000 для микросервисов?
A: Это стандартный диапазон для внутреннего использования, 8000+ зарезервирован для REST.
Q: Как добавить свой микросервис?
A: Читайте MICROSERVICE_GUIDE.md - там всё подробно описано.
Q: Как изменить порты?
A: Отредактируйте src/main.rs в каждом компоненте и обновите PORT_ALLOCATION.md.
📞 Поддержка
Если что-то не работает:
- Проверьте что все терминалы открыты
- Посмотрите логи (особенно при
RUST_LOG=debug) - Убедитесь что порты свободны (
lsof -i) - Читайте документацию в ARCHITECTURE.md
Готово к использованию! 🎉
Откройте Swagger UI в браузере и начните тестировать API:
http://localhost:8000/swagger-ui