// Файл: 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 запроса }