Middle+
Parandage lahendus iga namespace top-10 jaoks, arvestades, et teenused võivad olla erinevates klastrites, kuid samas namespace'is (vajalik on ühendamine)
sobes.tech AI
Vastus AI-lt
Kui teenused võivad paikneda erinevates klastrites, kuid kuuluvad ühte namespace'i, siis tuleb iga namespace'i top-10 jaoks andmed kokku koguda, ühendades tulemused kõigist klastritest.
Lähte:
- Koguge metrikad või andmed teenuste kohta kõigist klastritest.
- Ühendage andmed
namespacevõtme alusel. - Iga namespace'i jaoks ühendage kõik teenused erinevatest klastritest.
- Sorteerige teenused vastavalt vajalikele kriteeriumidele (näiteks koormuse järgi) ja valige top-10.
Näide Go keeles (lihtsustatud):
Type ServiceData struct {
Namespace string
Service string
Metric int
}
// servicesFromClusters — erinevatest klastritest pärinevate andmete lõik
func Top10ByNamespace(servicesFromClusters [][]ServiceData) map[string][]ServiceData {
combined := make(map[string][]ServiceData)
// Andmete ühendamine namespace'i kaupa
for _, clusterData := range servicesFromClusters {
for _, svc := range clusterData {
combined[svc.Namespace] = append(combined[svc.Namespace], svc)
}
}
result := make(map[string][]ServiceData)
for ns, svcs := range combined {
// Sorteerimine metrika alusel kahanevalt
sort.Slice(svcs, func(i, j int) bool {
return svcs[i].Metric > svcs[j].Metric
})
// Top-10 valimine
limit := 10
if len(svcs) < 10 {
limit = len(svcs)
}
result[ns] = svcs[:limit]
}
return result
}
Selline lähenemine võimaldab koguda ja järjestada teenuseid namespace'i kaupa, sõltumata sellest, millistes klastrites need asuvad.