Page 17 - Fister jr., Iztok, and Andrej Brodnik (eds.). StuCoSReC. Proceedings of the 2017 4th Student Computer Science Research Conference. Koper: University of Primorska Press, 2017
P. 17
ka 2: Podatkovni model porazdeljenega raˇcunalniˇskega sistema.
4.1 Podatkovni model nima nobenega dodatnega balasta, ki je potreben pri nava-
dnih zahtevah HTTP. Cˇ as poˇsiljanja paketa na streˇznik je
Osnova podatkovnega modela 1 sta entiteti Algorithm in Pro- precej krajˇsi, saj ni potrebno vedno znova poˇsiljati zahtev,
blem, kjer so shranjene njune posamezne informacije. V ker se vse poˇslje po obstojeˇci povezavi. Odpade tudi perio-
entiteti Solver nato definiramo, kateri algoritem bo reˇseval diˇcno preverjanje po novih nalogah, saj to sporoˇci streˇznik
posamezni problem. Vsak novi zagon reˇsevanja problema odjemalcu neposredno. Ogrodje Sails.js poskrbi, da se zah-
shranimo v entiteto SolverRun. Nova naloga, ki se pridobi od teve, poslane preko protokola HTTP, veˇzejo na enako akcijo
streˇznika v okviru zagona algoritma, je shranjena v entiteti kot WebSocket zahteve, kar je precej pospeˇsilo razvoj, saj
SolverRunWork in ima zaˇcetni ter konˇcni ˇcas izvajanja naloge. odpravi podvojenost programske kode.
Lastnik vsake naloge je SolverRunParticipant, ki je konˇcni upo-
rabnik porazdeljenega sistema in lahko naenkrat reˇsuje veˇc Na odjemalcu se posamezna naloga izvaja na svoji niti, s ka-
nalog. tero lahko komuniciramo preko dogodkovnega vodila (angl.
event bus). Z izvajanjem nalog v ozadju se izognemo obre-
4.2 Implementacija menjevanju glavne niti, kar lahko povzroˇci, da se uporabni-
ˇski vmesnik preneha odzivati. Vsako ustvarjeno nit po koncu
Ogrodja za razvoj aplikacij niso nujno potrebna, nam pa izvajanja naloge prekinemo in tako sprostimo raˇcunalniˇske
zagotavljajo, da bo razvoj primerno strukturiran in bo po- vire ter odjemalca pripravimo na nove naloge.
tekal v skladu s poslovnimi pravili ter omogoˇcal kasnejˇse
nadgradnje in vzdrˇzevanje. S ponovno uporabo generiˇcnih 5. REZULTATI
modulov ogrodja, razvijalci prihranijo veliko ˇcasa in se lahko
osredotoˇcijo na druga podroˇcja. Za zaledni sistem smo iz- Testiranje porazdeljenega sistema je potekalo v nadzornem
brali ogrodje Sails.js [5], ki je zgrajeno na osnovi Node.js [4] okolju, kjer so sodelovali do trije odjemalci. Zakljuˇcni pogoj
streˇzniˇske tehnologije. Izbrali smo ga zaradi modularnosti, izvajanja algoritma lssOrel za doloˇceno velikost problema
preproste uporabe in podpori realnoˇcasovnih povezav z odje- smo definirali kot:
malcem. Za izdelavo uporabniˇskega vmesnika smo uporabili
ogrodje AngularJS [1], ki nas je prepriˇcalo s sinhronizacijo maksimalno ˇstevilo ovrednotenj = 2743, 37 ∗ 1, 1456L (5)
podatkov med modelom in pogledom. Ko se podatki v mo-
delu spremenijo, se to odraˇza v pogledu ter obratno. To se Enaˇcbo smo pridobili iz testnih podatkov v [8] in je ocena,
zgodi takoj in samodejno, kar zagotavlja, da sta model in koliko ovrednotenj je potrebno, da dobimo optimalno reˇsitev
pogled vedno posodobljena. ali njen pribliˇzek. Enaˇcbo smo potrdili kot pravilno, saj smo
v vseh zagonih algoritma dobili najboljˇse znane reˇsitve glede
Za realno ˇcasovno povezavo skrbi komunikacijski protokol na [8] za velikosti problema L ≤ 149 (glej tabelo 4.2).
WebSocket, ki ustvari dvosmerni kanal za komuniciranje med
odjemalcem in streˇznikom. Preko povezave WebSocket je 6. ZAKLJUCˇ EK
velikost posameznega poslanega paketa precej manjˇsa, saj
StuCoSReC Proceedings of the 2017 4th Student Computer Science Research Conference 17
Ljubljana, Slovenia, 11 October
4.1 Podatkovni model nima nobenega dodatnega balasta, ki je potreben pri nava-
dnih zahtevah HTTP. Cˇ as poˇsiljanja paketa na streˇznik je
Osnova podatkovnega modela 1 sta entiteti Algorithm in Pro- precej krajˇsi, saj ni potrebno vedno znova poˇsiljati zahtev,
blem, kjer so shranjene njune posamezne informacije. V ker se vse poˇslje po obstojeˇci povezavi. Odpade tudi perio-
entiteti Solver nato definiramo, kateri algoritem bo reˇseval diˇcno preverjanje po novih nalogah, saj to sporoˇci streˇznik
posamezni problem. Vsak novi zagon reˇsevanja problema odjemalcu neposredno. Ogrodje Sails.js poskrbi, da se zah-
shranimo v entiteto SolverRun. Nova naloga, ki se pridobi od teve, poslane preko protokola HTTP, veˇzejo na enako akcijo
streˇznika v okviru zagona algoritma, je shranjena v entiteti kot WebSocket zahteve, kar je precej pospeˇsilo razvoj, saj
SolverRunWork in ima zaˇcetni ter konˇcni ˇcas izvajanja naloge. odpravi podvojenost programske kode.
Lastnik vsake naloge je SolverRunParticipant, ki je konˇcni upo-
rabnik porazdeljenega sistema in lahko naenkrat reˇsuje veˇc Na odjemalcu se posamezna naloga izvaja na svoji niti, s ka-
nalog. tero lahko komuniciramo preko dogodkovnega vodila (angl.
event bus). Z izvajanjem nalog v ozadju se izognemo obre-
4.2 Implementacija menjevanju glavne niti, kar lahko povzroˇci, da se uporabni-
ˇski vmesnik preneha odzivati. Vsako ustvarjeno nit po koncu
Ogrodja za razvoj aplikacij niso nujno potrebna, nam pa izvajanja naloge prekinemo in tako sprostimo raˇcunalniˇske
zagotavljajo, da bo razvoj primerno strukturiran in bo po- vire ter odjemalca pripravimo na nove naloge.
tekal v skladu s poslovnimi pravili ter omogoˇcal kasnejˇse
nadgradnje in vzdrˇzevanje. S ponovno uporabo generiˇcnih 5. REZULTATI
modulov ogrodja, razvijalci prihranijo veliko ˇcasa in se lahko
osredotoˇcijo na druga podroˇcja. Za zaledni sistem smo iz- Testiranje porazdeljenega sistema je potekalo v nadzornem
brali ogrodje Sails.js [5], ki je zgrajeno na osnovi Node.js [4] okolju, kjer so sodelovali do trije odjemalci. Zakljuˇcni pogoj
streˇzniˇske tehnologije. Izbrali smo ga zaradi modularnosti, izvajanja algoritma lssOrel za doloˇceno velikost problema
preproste uporabe in podpori realnoˇcasovnih povezav z odje- smo definirali kot:
malcem. Za izdelavo uporabniˇskega vmesnika smo uporabili
ogrodje AngularJS [1], ki nas je prepriˇcalo s sinhronizacijo maksimalno ˇstevilo ovrednotenj = 2743, 37 ∗ 1, 1456L (5)
podatkov med modelom in pogledom. Ko se podatki v mo-
delu spremenijo, se to odraˇza v pogledu ter obratno. To se Enaˇcbo smo pridobili iz testnih podatkov v [8] in je ocena,
zgodi takoj in samodejno, kar zagotavlja, da sta model in koliko ovrednotenj je potrebno, da dobimo optimalno reˇsitev
pogled vedno posodobljena. ali njen pribliˇzek. Enaˇcbo smo potrdili kot pravilno, saj smo
v vseh zagonih algoritma dobili najboljˇse znane reˇsitve glede
Za realno ˇcasovno povezavo skrbi komunikacijski protokol na [8] za velikosti problema L ≤ 149 (glej tabelo 4.2).
WebSocket, ki ustvari dvosmerni kanal za komuniciranje med
odjemalcem in streˇznikom. Preko povezave WebSocket je 6. ZAKLJUCˇ EK
velikost posameznega poslanega paketa precej manjˇsa, saj
StuCoSReC Proceedings of the 2017 4th Student Computer Science Research Conference 17
Ljubljana, Slovenia, 11 October