Kuidas
toimib?
Natuke Nagist tehnilise poole pealt - mis, kuidas ja miks.
Failid
Tõenäoliselt on see alapunkt enamuse jaoks huvitapakkuvaim osa - mis juhtub failiga peale üleslaadimist...
Vahendid
Andmemahud
Hetkel (01.11.2008) on Nagis serverites kasutusel 87 ketast kogumahus 40 TB. Reaalselt
kasutatavat andmehoidla mahtu on sellest vähem kui 13 TB kuna igat faili säilitatakse
3-s koopias - 2 koopiat serveriruumis ning kolmas eraldi füüsilises asukohas.
Kuidas andmeid hoitakse?
- kõige all on riistvaraline raid-5 mis kaitseb füüsilise ketta suremise vastu
- glusterfs-i tarkvaraline ketas - kahte serverise kirjutamine/ühest lugemine - et
tagada ühe failiserveri probleemide korral katkematu töö
- kolmas koopia tehakse rsynci abil erinavasse füüsilisse kohta 5-e minutiliste
intervallidega.
Mis juhtub faili kustutamisel?
Nagist pildi kustutamisel tegelikult reaalselt faile failisüsteemist ei kustutata. Ühest küljest teeb
mitme pildi kustutamisel reaalselt failisüsteemist failide eemaldamine kustutamisprotsessi kasutaja
jaoks aeglaseks, teisest küljest kui fail kohe eemaldada kaob ka taastamisvõimalus.
Pildi info kustutatakse andmebaasist ning ligipääsu failile reguleeritakse failisüsteemi õigustega.
Kustutatud failid eemaldatakse reaalselt teenuse serverite failisüsteemist nädala möödudes ning
eraldi koopiast ühel kindlal päeval nädalas.
Selline failide kustutamine tagab, et fail on peale kustutamist vähemalt 1-e nädala
jooksul taastatav.
Andmebaasid
Andmebaas on iga teenuse olusisim osa - andmebaasita oleks kõik failid väärtusetud - lihtsalt miljonid
failid millega ei oskaks keegi midagi peale hakata.
Vahendid
Andmemahud
Hetkel (01.11.2008) on andmebaasimaht 111 GB (3 koopiat iga koopia 37 GB).
Kuidas?
- 2 koopiat andmebaasist asuvas teenuse serveriruumis master-master replikatsioon
- 3-s koopia on erinavas füüsilises asukohas master-slave replikatsioon
- Kõik teenused kasutavad ühte andmebaasiserverit, probleemide/hooldustööde korral lülitatakse teenused kas
automaatselt või manuaalselt teisele serverile ringi.
Varundamine?
- MySQL-i andmebaaasidest tehakse kord päevas täielik koopia
- Täielikku koopiat hoitakse viimase 7-e päeva kohta vähemalt 3-s koopias ja vähemalt
2-s erinevas füüsilis asukohas
- Iga nädala viimane täielik koopia salvestatakse eraldi andmekandjale ning säilitatakse seifis
- Andmebaasi uuendused
- Iga andmebaasi muudatus on logitud
- Kõik logifailid salvestatakse eraldi andmekandjale ning säilitatakse seifis
Teenused
Ka kõige rahulikumal päeval (reede-laupäev) on Nagi serveritesse üle 25-e miljoni päringu mis
jaotub enamuses 16 tunni peale millest veerand aega on nn. "tipptund" ning sellel "tipptunnil" peavad
Nagi serverid rohkem, kui üle 1000 päringu sekundis teenindama. Kui seda üritada toore jõuga
teha, siis peaks Nagil vähemalt 10 korda nii palju servereid olema, kui neid reaalselt on.
Tegelikult see 25 miljonit, mis ülevalpool mainitud oleks toore jõu puhul pigem 50 miljonit. Miks see number on
2 korda väiksem ja kuidas suudavad hetkel serverid suurema vaevata päringud teenindada, sellest kohe (siis kui edasi viitsib
kirjutada) lähemalt.
Veebiserverid
Koormuse jaotamine
Kuidas teenused normaalse kiirusega toimivad?
Reeglid
Muda tasuks silmas pidada, kui on plaanis midagi sarnast ehitada
- (1) Failisüsteem on aeglane. Vältida tuleks mõttetuid failisüsteemi operatsioone. Ka lihtne faili olemasolu
kontroll on ebavajalik. Kui tegu on võrgu failisüsteemiga on asi veel aeglasem.
- Veebipäringu serveerimine üle võrgu on aeglane - kõik muutumatud failid peaksid omama puhverdamist lubavaid
päiseid, et nad säiliks kasutaja arvutis ning lehe serveerimisel võimalikult palju elemente
tuleks brauseri puhvrist.
- Pakkimata sisu saatmine on aeglane - 100 kilobaidine tekstifail on pakituna paar kilobaiti - ka modemiga
on sellise faili tirimine serverist kiire. Tänapäevased arvutid pakivad selle lahti millisekunditega
- üle võrgu tirides kuluks selleks sekundeid. Serveritele tekitab suuremat koormust aeglase ühenduse otsas
olev klient, kui veebilehe sisu pakkimine.
- Andmebaasi päring on aeglane - kõik päringud, mida on võimalik puhverdada tuleb puhverdada mõne puhtalt mälus
oleva puhvri abil. Külastaja ei tea mis sul andmebaasis on, kui tegu pole tema enda andmetega - seega pea igat
päringut, mis ei käi kasutaja enda andmete kohta saab vähemalt mõned minutid puhverdada. Näiteks, kui tegu on lehega
mida päritakse 1000 korda sekundis, siis paarisekundilise puhvriga säästad andmebaasile 999 päringut sekundis.
1000 mälust lugemist käib 1000 korda kiiremini, kui 1000 triviaalset andmebaasipäringut.
- Andmebaasi päring on kallis (aeglane), kui ta ei kasuta ning indexit (või kasutab osaliselt indexit aga peab
päringu filtreerimiseks kettalt andmeid lugema vt. (1)) tahab teha päringu teostamiseks ajutise
tabeli vt. (1).
- Mõõda-analüüsi-optimeeri - mõõda lehtede genereerimise kiirust, logi andmebaasi aeglaseid päringuid ning
optimeeri kus võimalik. Veebilehtede genereerimise kiirused võiks jääda alla 0.2 sekundi ning kindlasti peaksid
olema alla sekundi. Kui lehe genereerimiseks kulub üle sekundi tundub leht aeglane.