cubenet_backend/PORT_ALLOCATION.md

5.9 KiB
Raw Permalink Blame History

Управление портами 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: Создать структуру

# 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

# Cargo.toml (корневой)
[workspace]
members = [
    "api_gateway",
    "api",
    "microservices/user_service",
    "microservices/product_service",  # ← Добавить
    "shared_proto"
]

📋 Процедура добавления микросервиса

  1. Выбрать порт → Обновить таблицу выше
  2. Создать protoshared_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

# Проверить какой процесс на порту
lsof -i :13002

# Проверить все используемые порты
netstat -an | grep LISTEN

Windows

# Проверить порты
netstat -ano | findstr :13002

🚨 Правила выделения портов

ДЕЛАЙТЕ:

  • Выбирайте порты из диапазона 13000-14000 для микросервисов
  • Обновляйте этот файл при добавлении нового сервиса
  • Используйте шаблон (template_service) для новых сервисов
  • Проверяйте что порт свободен перед запуском

НЕ ДЕЛАЙТЕ:

  • Не используйте зарезервированные порты (8000, 8001)
  • Не переопределяйте уже выделенные порты
  • Не запускайте несколько сервисов на одном порту
  • Не используйте порты за пределами 13000-14000 для микросервисов

💡 Примеры

Пример 1: Product Service на 13002

# shared_proto/proto/product.proto
service ProductService {
  rpc GetProduct(GetProductRequest) returns (Product);
}
// microservices/product_service/src/main.rs
let addr = "127.0.0.1:13002".parse()?;

Пример 2: Auth Service на 13004

# shared_proto/proto/auth.proto
service AuthService {
  rpc Login(LoginRequest) returns (TokenResponse);
}
// microservices/auth_service/src/main.rs
let addr = "127.0.0.1:13004".parse()?;

📞 Команды для проверки

# Проверить запущенные сервисы
cargo run --list-targets

# Скомпилировать всё
cargo build

# Запустить конкретный сервис
cargo run -p user_service

# Проверить что порт слушается
grpcurl -plaintext localhost:13001 list

🔄 Обновление таблицы

Когда вы создаете новый микросервис:

| 13002 | Product Service | ✓ Активен | product.proto | Сервис управления продуктами |

📝 История добавления сервисов

Дата Сервис Порт Автор
2024-11-19 User Service 13001 Cubenet Team
- - - -

Обновляйте эту таблицу при добавлении новых сервисов!