Tous les produits
Search
Centre de documentation

Simple Log Service:Fonction de mesure de l'équilibrage de charge

Dernière mise à jour :Aug 18, 2026

Pour mettre en œuvre l'équilibrage de charge dans un système distribué, vous devez d'abord mesurer avec précision l'état de cet équilibrage. Cette rubrique décrit la syntaxe de base de la fonction et fournit un exemple.

Contexte

  • Les journaux d'exemple contiennent six champs : ID du cluster, ID du serveur, heure, charge CPU, charge mémoire et charge de la bande passante réseau. Pour plus d'informations, consultez la section Créer un index.

    Les six champs sont configurés comme suit : cluster_id (texte), server_id (texte), time_period (texte), cpu_load (double), ram_load (double) et network_load (double). Tous les champs sont interrogeables et un tokenizer est configuré pour les champs de type texte.

  • Voici des exemples de journaux :

    {"cluster_id":"C001","cpu_load":"0.1","network_load":"0.6","ram_load":"0.7","server_id":"S001","time_period":"2024-01-01 00:00:00"}
    {"cluster_id":"C001","cpu_load":"0.2","network_load":"0.5","ram_load":"0.8","server_id":"S002","time_period":"2024-01-01 00:01:00"}
    {"cluster_id":"C001","cpu_load":"0.1","network_load":"0.6","ram_load":"0.7","server_id":"S001","time_period":"2024-01-01 00:02:00"}
    {"cluster_id":"C001","cpu_load":"0.2","network_load":"0.5","ram_load":"0.8","server_id":"S002","time_period":"2024-01-01 00:03:00"}
    {"cluster_id":"C001","cpu_load":"0.1","network_load":"0.6","ram_load":"0.7","server_id":"S001","time_period":"2024-01-01 00:04:00"}
    {"cluster_id":"C001","cpu_load":"0.2","network_load":"0.5","ram_load":"0.8","server_id":"S002","time_period":"2024-01-01 00:05:00"}
    {"cluster_id":"C001","cpu_load":"0.1","network_load":"0.6","ram_load":"0.7","server_id":"S001","time_period":"2024-01-01 00:06:00"}
    {"cluster_id":"C001","cpu_load":"0.2","network_load":"0.5","ram_load":"0.8","server_id":"S002","time_period":"2024-01-01 00:07:00"}
    {"cluster_id":"C001","cpu_load":"0.1","network_load":"0.6","ram_load":"0.7","server_id":"S001","time_period":"2024-01-01 00:08:00"}
    {"cluster_id":"C001","cpu_load":"0.2","network_load":"0.5","ram_load":"0.8","server_id":"S002","time_period":"2024-01-01 00:09:00"}

Fonctions de mesure de l'équilibrage de charge

Nom de la fonction

Syntaxe

Description

Type de retour

Fonction how_balanced

how_balanced(array(array(double)) load_matrix)

Mesure le degré d'équilibrage de charge dans un système distribué lorsqu'elle est utilisée conjointement avec la fonction array_agg. La valeur renvoyée se situe dans la plage (0,1] ; une valeur proche de 1 indique un équilibrage optimal, tandis que 1 représente un état parfaitement équilibré.

double

Fonction how_balanced

Cette fonction mesure le degré d'équilibrage de charge dans un système distribué en s'appuyant sur la fonction array_agg.

double how_balanced(array(array(double)) load_matrix)

Paramètre

Description

load_matrix

Matrice de charge où chaque ligne représente le vecteur de série temporelle de la charge d'un seul serveur.

Exemple

  • Instruction de requête et d'analyse

    * | with server_time_series as
    (
        select cluster_id,
            server_id,
            array_agg(to_unixtime(date_parse(time_period, '%Y-%m-%d %H:%i:%s'))) as time_periods,
            array_agg(cpu_load + ram_load + network_load) as metric_values
        from log
        where time_period >= '2024-01-01 00:00:00'
          and time_period < '2024-01-02 00:00:00'
        group by cluster_id, server_id
    ),
    imputed_server_series as
    (
        select cluster_id,
            server_id,
            ts_fill_missing(
                time_periods,
                metric_values,
                to_unixtime(date_parse('2024-01-01 00:00:00', '%Y-%m-%d %H:%i:%s')),
                to_unixtime(date_parse('2024-01-02 00:00:00', '%Y-%m-%d %H:%i:%s')),
                '1 minute', 'value=0') as imputed_time_series
        from server_time_series
    )
    select cluster_id,
        how_balanced(array_agg(imputed_time_series[2])) as balance
    from imputed_server_series
    group by cluster_id
  • Résultats

    La valeur balance renvoyée représente le degré d'équilibrage de charge sur une échelle de (0,1]. Plus la valeur est proche de 1, plus la charge est équilibrée.

    Cluster id

    Balance

    G1

    0,5