Название проекта: Сервис синхронизации пользовательских подов.
Цель проекта: Разработать сервис для автоматической синхронизации состояния пользовательских подов с их статусами в базе данных.
- Основной функционал
- Сервис должен периодически проверять статусы подов в базе данных.
- На основе статусов сервис должен создавать или удалять соответствующие поды в системе.
- По умолчанию все поды должны быть выключены.
- Синхронизация подов
- Интервал проверки статусов: каждые 5 минут.
- Логика синхронизации:
- Если под включен в базе данных, но отсутствует в системе — создать под.
- Если под выключен в базе данных, но присутствует в системе — удалить под.
- Если статус пода в базе данных соответствует его наличию/отсутствию в системе — не производить действий.
Сервис должен предоставлять следующий API:
AddClient()
- Назначение: Добавление нового клиента в систему.
- Входные данные: Информация о клиенте.
- Выходные данные: Идентификатор созданного клиента, статус операции.
UpdateClient()
- Назначение: Обновление информации о существующем клиенте.
- Входные данные: Идентификатор клиента, обновляемые поля.
- Выходные данные: Статус операции.
DeleteClient()
- Назначение: Удаление клиента из системы.
- Входные данные: Идентификатор клиента.
- Выходные данные: Статус операции.
UpdateStatus()
- Назначение: Обновление статуса пода клиента.
- Входные данные: Идентификатор статуса, новый статус подов.
- Выходные данные: Статус операции.
- Go 1.22
- Библиотеки и фреймворки: без ограничений
- Архитектура: REST API
- База данных: PostgreSQL
Структура клиента Client
и интерфейс Deployer
для управления подами:
type Client struct {
ID int
Name string
Version int
CPU string
Memory string
Priority float64
CreatedAt time.Time
UpdatedAt time.Time
}
type Deployer interface {
CreatePod(name string) error
DeletePod(name string) error
GetPodList() ([]string, error)
}
Таблица status
:
Column | Type |
---|---|
id |
int64 |
client_id |
int64 |
X |
bool |
Y |
bool |
Z |
bool |
X
, Y
, Z
— состояния пользовательских подов.