230 likes | 345 Vues
Rozloženie záťaže pri top-k fazetovom vyhľadávaní. Vedúci práce RNDr. Peter Gurský, PhD. Riešiteľ práce Bc. Juraj Bobák. Use Case. request. S i 1. D i 1. click. response. S i 2. read. D i 2. S i 3. D i 3. S i j. D i j. Charakteristika problému.
E N D
Rozloženie záťaže pri top-k fazetovom vyhľadávaní Vedúci práce RNDr. Peter Gurský, PhD. Riešiteľ práce Bc. Juraj Bobák
Use Case request Si1 Di1 click response Si2 read Di2 Si3 Di3 Sij Dij
Charakteristika problému • motiváciou pre prácu bolo vytvoriť systém narozloženie záťaže pri top-k fazetovomvyhľadávaní • atribútom rozloženia záťaže je taktiež počet používateľov vytvárajúcich dopyty pri vyhľadávaní • pri takomto vyhľadávaní sa vykonávajú rozdielne zložité dopyty, ktoré je potrebné rozdeľovať medzi rôzne výkonné servery pri zohľadnení ich vyťaženia • projekt Kapsa (Katalóg produktov s anotáciou)
Ciele • Požiadavky na Load Balancer • Fail-Over – reagovať na nedostupnosť serveru • Scalability – rozšírenie clusteru o server zvýši výkon clusteru • Rozdeľovanie záťaže na základe vyťaženia serverov a zložitosti dopytov • Analýza náročnosti dopytov
Vyťaženie serveru • Na základe výkonu, vyťaženosti CPU a operačnej pamäte spočítať vyťaženosť serveru • Rozposielať správy o vyťaženosti po sieti obežníkmi (broadcast)
Aplikácia na zistenie vyťaženia serveru a rozposielanie obežníkov • Dve časti: Messenger a Listener • Platforma Node.js (JavaScript na serveri) • Messenger.js • zisťuje a odosiela dáta obežníkmi po sieti o vytaženosti CPU, pamäte a siete • každý typ dát odosiela v inom čase a asynchrónne • Listener.js • počúva na sieti obežníky a prijímané dáta o každom stroji ukladá • na požiadanie vráti aktuálny stav serverov (HTTP req.)
Príklady odoslaného/prijatého objektu (JSON formát) { name: ‘cpu’, value: ‘0.25’, caption: ‘CPU Load’, speed: ‘1583’ } { name: ‘memory’, • value: ‘524288000’, • caption: ‘Freememory’ • }
Náročnosť dopytov • zisťovanie náročnosť dopytov • uloženie konfigurácie náročnosti dopytov do konfiguračného súboru, ktorý obsahuje náročnosť na: • pamäť serveru • procesor stroja • sieť (tá by mala byť top-k) • záleží tiež na použitom úložisku • je rozdiel v náročnosti na operačnú pamäť pri databáze MySQLa Indexe
Zisťovanie náročnosti dopytov • dopyty pre projekt „Kapsa“ • zatiaľ len jeden typ dopytu– fullscan domény • testovacie dáta • aktuálne dáta • náhodne vygenerované dáta
Testovanie dopytov • test dopytu na 17-ich doménach • 6 rovnakých databáz, z ktorých každá mala postupne o polovicu menšiu mohutnosť domény (o polovicu menej záznamov) • 100 dopytov pre každú doménu v každej zo šiestich databáz na troch rôznych serveroch • časové testy • pamäťové testy
Konfigurácia použitých serverov • na testovanie dopytov sme použili len servery s id = 1,2 a 4
Algoritmy pre Load Balancer • Load Balancer - dva varianty algoritmu • 1. algoritmus zohľadňuje len vyťaženie CPU a dostatok voľnej operačnej pamäte na výpočet dopytu • 2. algoritmus pracuje s premenlivými váhami na základe vyťaženia CPU a voľnej operačnej pamäte pre n dopytov s najvyššou spotrebou operačnej pamäte
Testovanie Load Balancerov • mod_proxy v základnom nastavení - mod_proxy • mod_proxy s nastavenými váhami serverov – mod_proxy_ver2 • mod_jk v základnom nastavení – mod_jk_ver1 • mod_jk s nastavenými váhami serverov – mod_jk_ver2 • kapsa Load Balancer – algoritmus I – kapsa_lb_ver2 • kapsa Load Balancer – algoritmus II – kapsa_lb_ver3
Testovanie Load Balancerov • test na 4 rôznych počítačoch • meranie času odpovede • meranie vyťaženia CPU a voľnej operačnej pamäte počas testov