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 запроса
|
||
}
|