Sobes.tech
Middle+

Hər namespace üçün ən yaxşı 10 üçün həllini təkmilləşdirin, xidmətlərin müxtəlif klasterlərdə ola biləcəyini, lakin eyni namespace-də olduğunu nəzərə alaraq (birləşdirilməlidir)

sobes.tech Süni İntellekt

AI-dan cavab

Xidmətlər müxtəlif klasterlərdə ola bilər, lakin eyni namespace-ə aid olarsa, hər bir namespace üçün ən yaxşı-10-u toplamaq üçün bütün klasterlərdən gələn nəticələri birləşdirərək məlumatları toplamalısınız.

Yanaşma:

  1. Bütün klasterlərdən xidmətlər haqqında metrikləri və ya məlumatları toplayın.
  2. Məlumatları namespace açarına görə birləşdirin.
  3. Hər bir namespace üçün, müxtəlif klasterlərdən gələn bütün xidmətləri birləşdirin.
  4. Lazımi meyar üzrə (məsələn, yükləmə) xidmətləri sıralayın və ən yaxşı-10-u seçin.

Go dilində nümunə (sadələşdirilmiş):

 type ServiceData struct {
    Namespace string
    Service   string
    Metric    int
}

// servicesFromClusters — müxtəlif klasterlərdən alınan məlumatların dilimi
func Top10ByNamespace(servicesFromClusters [][]ServiceData) map[string][]ServiceData {
    combined := make(map[string][]ServiceData)

    // Məlumatları namespace-ə görə birləşdirin
    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 {
        // Metrikaya görə azalan sıralama
        sort.Slice(svcs, func(i, j int) bool {
            return svcs[i].Metric > svcs[j].Metric
        })
        // Top-10-u götürün
        limit := 10
        if len(svcs) < 10 {
            limit = len(svcs)
        }
        result[ns] = svcs[:limit]
    }

    return result
}

Bu yanaşma, xidmətləri namespace-ə görə toplama və sıralamağa imkan verir, onların hansı klasterdə olmasından asılı olmayaraq.