48 lines
1.9 KiB
Go
48 lines
1.9 KiB
Go
|
|
// Файл: internal/cluster/types.go
|
|||
|
|
// Назначение: Общие типы данных для кластерных операций
|
|||
|
|
|
|||
|
|
package cluster
|
|||
|
|
|
|||
|
|
// NodeInfo представляет информацию об узле для координатора
|
|||
|
|
type NodeInfo struct {
|
|||
|
|
ID string `json:"id"`
|
|||
|
|
IP string `json:"ip"`
|
|||
|
|
Port int `json:"port"`
|
|||
|
|
Status string `json:"status"`
|
|||
|
|
LastSeen int64 `json:"last_seen"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// ClusterStatus представляет статус кластера
|
|||
|
|
type ClusterStatus struct {
|
|||
|
|
Name string `json:"name"`
|
|||
|
|
TotalNodes int `json:"total_nodes"`
|
|||
|
|
ActiveNodes int `json:"active_nodes"`
|
|||
|
|
SyncingNodes int `json:"syncing_nodes"`
|
|||
|
|
FailedNodes int `json:"failed_nodes"`
|
|||
|
|
ReplicationFactor int `json:"replication_factor"`
|
|||
|
|
LeaderID string `json:"leader_id"`
|
|||
|
|
Health string `json:"health"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// ClusterHealth представляет информацию о здоровье кластера
|
|||
|
|
type ClusterHealth struct {
|
|||
|
|
Nodes map[string]*NodeHealth `json:"nodes"`
|
|||
|
|
OverallScore float64 `json:"overall_score"`
|
|||
|
|
Recommendations string `json:"recommendations"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// NodeHealth представляет здоровье отдельного узла
|
|||
|
|
type NodeHealth struct {
|
|||
|
|
Status string `json:"status"`
|
|||
|
|
LatencyMs int64 `json:"latency_ms"`
|
|||
|
|
LastCheck int64 `json:"last_check"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// NodeRequest представляет запрос от одного узла к другому
|
|||
|
|
type NodeRequest struct {
|
|||
|
|
Type string `json:"type"` // replicate, query, sync, heartbeat
|
|||
|
|
Data []byte `json:"data"` // Данные запроса
|
|||
|
|
FromNode string `json:"from_node"` // ID узла-отправителя
|
|||
|
|
RequestID string `json:"request_id"` // Уникальный ID запроса
|
|||
|
|
}
|