Untuk menerapkan load balancing dalam sistem terdistribusi, Anda harus terlebih dahulu mengukur secara akurat kondisi load balancing-nya. Topik ini menjelaskan sintaks dasar fungsi tersebut dan memberikan contoh.
Latar Belakang
-
Log sampel berisi enam bidang: ID kluster, ID server, waktu, beban CPU, beban memori, dan beban lebar pita jaringan. Untuk informasi lebih lanjut, lihat Create an index.
Enam bidang tersebut dikonfigurasi sebagai berikut: cluster_id (text), server_id (text), time_period (text), cpu_load (double), ram_load (double), dan network_load (double). Semua bidang dapat dikueri, dan tokenizer dikonfigurasi untuk bidang teks.
-
Berikut adalah log sampel:
{"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"}
Fungsi pengukuran load balancing
|
Nama fungsi |
Sintaks |
Deskripsi |
Tipe nilai kembali |
|
how_balanced(array(array(double)) load_matrix) |
Mengukur tingkat load balancing dalam sistem terdistribusi saat digunakan bersama fungsi array_agg. Nilai kembali berada dalam rentang |
double |
fungsi how_balanced
Mengukur tingkat load balancing dalam sistem terdistribusi dengan fungsi array_agg.
double how_balanced(array(array(double)) load_matrix)
|
Parameter |
Deskripsi |
|
|
Matriks beban di mana setiap baris merepresentasikan vektor deret waktu dari beban satu server. |
Contoh
-
Pernyataan kueri dan analisis
* | 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 -
Hasil
Nilai
balanceyang dikembalikan merepresentasikan tingkat load balancing pada skala(0,1]. Nilai yang lebih mendekati 1 menunjukkan beban yang lebih seimbang.Cluster id
Balance
G1
0,5