Todos os produtos
Search
Central de documentação

Simple Log Service:Função de medição de balanceamento de carga

Última atualização: Jul 03, 2026

Para implementar o balanceamento de carga em um sistema distribuído, meça com precisão o estado desse balanceamento. Este tópico descreve a sintaxe básica da função e fornece um exemplo.

Contexto

  • Os logs de exemplo contêm seis campos: ID do cluster, ID do servidor, hora, carga de CPU, carga de memória e carga de largura de banda da rede. Para obter mais informações, consulte Criar um índice.

    A configuração dos seis campos é a seguinte: cluster_id (texto), server_id (texto), time_period (texto), cpu_load (double), ram_load (double) e network_load (double). Todos os campos aceitam consultas e há um tokenizador configurado para os campos de texto.

  • Exemplos de logs:

    {"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"}

Funções de medição de balanceamento de carga

Nome da função

Sintaxe

Descrição

Tipo de retorno

Função how_balanced

how_balanced(array(array(double)) load_matrix)

Mede o grau de balanceamento de carga em um sistema distribuído quando usada com a função array_agg. O valor retornado está no intervalo (0,1], em que valores mais próximos de 1 indicam carga mais equilibrada e 1 representa estado perfeitamente balanceado.

double

Função how_balanced

Mede o grau de balanceamento de carga em um sistema distribuído com a função array_agg.

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

Parâmetro

Descrição

load_matrix

Matriz de carga em que cada linha representa o vetor de série temporal da carga de um único servidor.

Exemplo

  • Instrução de consulta e análise

    * | 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
  • Resultados

    O valor balance retornado indica o grau de balanceamento de carga na escala (0,1]. Quanto mais próximo de 1, mais equilibrada é a distribuição da carga.

    ID do Cluster

    Balance

    G1

    0,5