# Управление портами Cubenet Backend ## 📌 Выделение портов Для обеспечения порядка и предотвращения конфликтов портов, используется следующая система выделения: ## 🔴 Зарезервированные порты ### REST API (8000-8099) ``` 8000 - API Gateway (REST + Swagger UI + OpenAPI docs) 8001 - API (Internal REST) ``` ### gRPC Internal (9000-9099) ``` 9000 - [Зарезервирован для будущего использования] ``` ### Микросервисы (13000-14000) ``` 13000 - TemplateService (Шаблон для новых сервисов) [НЕ ИСПОЛЬЗУЕТСЯ] 13001 - User Service ✓ 13002 - [Доступно] 13003 - [Доступно] ... 14000 - [Доступно] ``` ## ✅ Матрица микросервисов | Порт | Сервис | Статус | Proto файл | Примечание | |------|--------|--------|----------|-----------| | 13000 | Template Service | Шаблон | - | Используйте для создания новых сервисов | | 13001 | User Service | ✓ Активен | user.proto | Пример реализации | | 13002 | Product Service | [Доступен] | - | Пример: сервис продуктов | | 13003 | Order Service | [Доступен] | - | Пример: сервис заказов | | 13004 | Auth Service | [Доступен] | - | Пример: сервис аутентификации | | 13005-14000 | Your Services | [Доступны] | - | Используйте эти порты для ваших сервисов | ## 🎯 Создание нового микросервиса ### Шаг 1: Выбрать свободный порт 1. Посмотрите матрицу выше 2. Выберите первый свободный порт (например 13002) 3. Обновите эту таблицу (пометьте как "✓ Активен") ### Шаг 2: Создать структуру ```bash # 1. Копировать шаблон cp -r microservices/template_service microservices/product_service # 2. Обновить Cargo.toml # Измените: # [package] # name = "product_service" # 3. Создать proto файл (shared_proto/proto/product.proto) # 4. Обновить shared_proto/src/lib.rs # 5. Обновить shared_proto/build.rs # 6. Реализовать сервис ``` ### Шаг 3: Зарегистрировать в Workspace ```toml # Cargo.toml (корневой) [workspace] members = [ "api_gateway", "api", "microservices/user_service", "microservices/product_service", # ← Добавить "shared_proto" ] ``` ## 📋 Процедура добавления микросервиса 1. **Выбрать порт** → Обновить таблицу выше 2. **Создать proto** → `shared_proto/proto/my_service.proto` 3. **Обновить shared_proto** → Добавить в `src/lib.rs` и `build.rs` 4. **Создать сервис** → `microservices/my_service/` 5. **Добавить в workspace** → Обновить корневой `Cargo.toml` 6. **Протестировать** → `cargo check && cargo build` ## 🔍 Проверка свободных портов ### Linux/Mac ```bash # Проверить какой процесс на порту lsof -i :13002 # Проверить все используемые порты netstat -an | grep LISTEN ``` ### Windows ```bash # Проверить порты netstat -ano | findstr :13002 ``` ## 🚨 Правила выделения портов ✅ **ДЕЛАЙТЕ:** - Выбирайте порты из диапазона 13000-14000 для микросервисов - Обновляйте этот файл при добавлении нового сервиса - Используйте шаблон (template_service) для новых сервисов - Проверяйте что порт свободен перед запуском ❌ **НЕ ДЕЛАЙТЕ:** - Не используйте зарезервированные порты (8000, 8001) - Не переопределяйте уже выделенные порты - Не запускайте несколько сервисов на одном порту - Не используйте порты за пределами 13000-14000 для микросервисов ## 💡 Примеры ### Пример 1: Product Service на 13002 ```toml # shared_proto/proto/product.proto service ProductService { rpc GetProduct(GetProductRequest) returns (Product); } ``` ```rust // microservices/product_service/src/main.rs let addr = "127.0.0.1:13002".parse()?; ``` ### Пример 2: Auth Service на 13004 ```toml # shared_proto/proto/auth.proto service AuthService { rpc Login(LoginRequest) returns (TokenResponse); } ``` ```rust // microservices/auth_service/src/main.rs let addr = "127.0.0.1:13004".parse()?; ``` ## 📞 Команды для проверки ```bash # Проверить запущенные сервисы cargo run --list-targets # Скомпилировать всё cargo build # Запустить конкретный сервис cargo run -p user_service # Проверить что порт слушается grpcurl -plaintext localhost:13001 list ``` ## 🔄 Обновление таблицы Когда вы создаете новый микросервис: ```markdown | 13002 | Product Service | ✓ Активен | product.proto | Сервис управления продуктами | ``` ## 📝 История добавления сервисов | Дата | Сервис | Порт | Автор | |------|--------|------|-------| | 2024-11-19 | User Service | 13001 | Cubenet Team | | - | - | - | - | Обновляйте эту таблицу при добавлении новых сервисов!