Sobes.tech
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:

  1. Koguge metrikad või andmed teenuste kohta kõigist klastritest.
  2. Ühendage andmed namespace võtme alusel.
  3. Iga namespace'i jaoks ühendage kõik teenused erinevatest klastritest.
  4. 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.