Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 11633|Atsakyti: 0

Apkrovos balansavimas, seanso sulaikymas, seanso sinchronizavimas

[Kopijuoti nuorodą]
Paskelbta 2015-05-14 00:16:44 | | |


1. Kas yra apkrovos balansavimas
Nauja svetainė neturėtų būti subalansuota apkrova, nes srauto apimtis nėra didelė, todėl nereikia užsiimti šiais dalykais. Tačiau sparčiai augant svetainės lankomumui ir srautui, vieną serverį riboja savo aparatinės įrangos sąlygos, todėl sunku atlaikyti tokį didelį apsilankymų skaičių. Tokiu atveju galima rinktis iš dviejų variantų:
1. Atnaujinkite vieno serverio aparatinę įrangą nuo dviejų branduolių iki keturių branduolių, padidinkite atmintį ir kt.
2. Padidinkite serverių skaičių, kad pasidalintumėte serverių našta. Pasiekti tikslą padidinti tinklo pralaidumą ir padidinti serverio apdorojimo galią.
Pirmasis metodas gali būti suprantamas kaip vertikalus vystymasis, kuris visada yra ribotas. Antrasis metodas yra teisingas pasirinkimas problemai išspręsti
Apkrovos balansavimo metodus galima suskirstyti į dvi kryptis: viena yra naudoti programinę įrangą apkrovos balansavimui pasiekti, o kita - įgyvendinti aparatinės įrangos apkrovos balansavimą (įskaitant aparatinės ir programinės įrangos derinimą)
Naudokite programinę įrangą, kad pasiektumėte apkrovos balansavimą, o apkrovos balansavimo procesas taip pat sunaudoja tam tikrus sistemos išteklius ir padidina reakcijos laiką. Pavyzdžiui, LVS, nginx, haproxy, apache ir kt., Ši programomis pagrįsta apkrovos balansavimo programinė įranga tinka svetainėms, kuriose nėra ypač daug apsilankymų. Jei turite svetainę su dideliu apsilankymų skaičiumi, pvz., sina ir 163, akivaizdžiausias pasirinkimas yra naudoti aparatinę įrangą apkrovos balansavimui įgyvendinti.
Yra daug apkrovos balansavimo algoritmų, įskaitant apkrovos balansavimą pagal užklausų skaičių, šakninius IP adresus ir srautu pagrįstus algoritmus. Yra du algoritmai, kuriuos dažnai naudoju.
Vienas yra pagrįstas užklausų skaičiumi
a, jis gali suprasti, kad kiekvienas serveris gali tolygiai dalytis kliento užklausa, o jei vienas iš serverių sugenda, tai nesukels blogo poveikio.
b. Būsena tarp serverių turi būti sinchronizuota, pvz., seansas, ir šioms būsenoms sinchronizuoti reikalingos kitos priemonės.
Vienas yra pagal IP
A, ip_hash algoritmas gali susieti IP serverį, o tai gali išspręsti sesijos sinchronizavimo problemą
b. Blogas dalykas apie ip_hash yra tai, kad jei vienas iš serverių neveikia, vartotojai, susieti su šiuo serveriu, bus prislėgti.
c, ip_hash gali lengvai sukelti nesubalansuotą apkrovą, dabar upės krabų vyriausybė filtruoja "Google" paieškos raktažodžius, dažnai rasite, kad "Google" negali atidaryti, bet po kurio laiko bus gerai. Dėl to "Google" entuziastai buvo prislėgti, ir daugelis vartotojų išvyko į užsienį ieškoti agentų. Jei taip atsitiks, šie tarpiniai serveriai bus priskirti tam pačiam serveriui, sukeldami nesubalansuotą apkrovą ir net gedimą.

Antra, kas yra sesijos laikymas ir kokia jo funkcija
Sesijos sulaikymas reiškia apkrovos balansavimo priemonės mechanizmą, kuris užtikrina, kad prieigos užklausos, susijusios su tuo pačiu vartotoju, būtų paskirstytos tam pačiam serveriui atliekant apkrovos balansavimą.
Ką daro sesijos sulaikymas, pateikite pavyzdį
Jei vartotojo prieigos užklausa priskirta serveriui A ir prisijungia prie serverio A, o per trumpą laiką šis vartotojas išsiunčia kitą užklausą, jei nėra sesijos sulaikymo funkcijos, tikėtina, kad šio vartotojo užklausa bus priskirta serveriui B, šiuo metu serveryje B nėra prisijungimo, todėl turite prisijungti dar kartą, tačiau vartotojas nežino, kur priskirta jo užklausa, vartotojo jausmas toks, kad jis yra prisijungęs, kodėl jis turi prisijungti dar kartą, vartotojo patirtis yra labai bloga.
Ir jei ką nors perkate "Taobao", iš login = "Shoot something=" add address = "to pay", tai yra procesų serija, kurią taip pat galima suprasti kaip operacijos procesą, visą šią operacijų procesų seriją turėtų atlikti vienas serveris, o apkrovos balansavimo įrenginys negali jų priskirti skirtingiems serveriams.
Sesijos sulaikymas turi laiko limitą (išskyrus serverius, kurie yra susieti su fiksuotu, pvz., ip_hash), o įvairūs apkrovos balansavimo įrankiai pateiks šį sesijos sulaikymo laiko nustatymą, LVS, apache ir kt. Net PHP kalba suteikia session.gc_maxlifetime nustatyti sesijos sulaikymo laiką
Seanso sulaikymo laikas turėtų būti nustatytas ilgiau nei seanso išlikimo laikas, o tai gali sumažinti seansų sinchronizavimo poreikį, tačiau jo negalima pašalinti. Taigi sinchronizuoti seansus vis tiek reikia atlikti.

Trečia, seanso sinchronizavimas
Kodėl sesijos sinchronizavimas, tai buvo paminėta kalbant apie sesijos palaikymą. Daugiau informacijos rasite Trys seansų sinchronizavimo žiniatinklio klasteryje metodai

Yra trys seansų sinchronizavimo būdai žiniatinklio klasteryje

Atlikę žiniatinklio klasterį, pirmiausia tikrai apsvarstysite sesijos sinchronizavimą, nes po apkrovos balansavimo ta pati IP prieiga prie to paties puslapio bus priskirta skirtingiems serveriams. Taigi šiame straipsnyje pateikiami trys skirtingi šios problemos sprendimo būdai pagal šią situaciją:
Pirmiausia naudokite duomenų bazę, kad sinchronizuotumėte seansą
Šio metodo nenaudojau sinchronizuodamas kelių serverių seansą, bet jei turėčiau naudoti šį metodą, pagalvojau apie du metodus:
1. Naudokite žemos klasės kompiuterį, kad sukurtumėte duomenų bazę, skirtą žiniatinklio serverio sesijai saugoti, arba sukurkite šią specialią duomenų bazę failų serveryje, kai vartotojas prisijungs prie žiniatinklio serverio, jis eis į šią specialią duomenų bazę, kad patikrintų sesijos situaciją, kad pasiektų sesijos sinchronizavimo tikslą.
2. Šis metodas yra įdėti lentelę, kurioje saugoma sesija, kartu su kitomis duomenų bazės lentelėmis, jei mysql taip pat yra sugrupuota, kiekvienas mysql mazgas turi turėti šią lentelę, o šios sesijos lentelės duomenų lentelė turi būti sinchronizuojama realiuoju laiku.
Paaiškinimas: Duomenų bazės naudojimas seansams sinchronizuoti padidins duomenų bazės naštą, kuri iš prigimties yra linkusi į kliūtis. Pirmasis iš aukščiau išvardytų dviejų metodų yra geresnis, kuris atskiria lentelę, kurioje sesija dedama savarankiškai, sumažinant realios duomenų bazės naštą
2. Naudokite slapukus seansams sinchronizuoti
sesija yra failo situacija, saugoma serverio pusėje, o slapukas yra failo situacija kliente, kaip pasiekti sinchronizavimą? Metodas yra labai paprastas, tai yra, į slapuką įdėti vartotojo apsilankymo puslapio sugeneruotą sesiją, tai yra, naudoti slapuką kaip perdavimo stotį. Jūs lankotės žiniatinklio serveryje A, sugeneruojate sesiją ir įdedate ją į slapuką, jūsų prieiga priskirta žiniatinklio serveriui B, šiuo metu žiniatinklio serveris B pirmiausia sprendžia, ar serveryje yra ši sesija, jei ne, eikite pažiūrėti, ar kliento slapuke yra ši sesija, jei ne, tai reiškia, kad sesija tikrai neišsaugota, jei slapuke yra, Sinchronizuokite slapuke esantį sessoin su žiniatinklio serveriu B, kad sesiją būtų galima sinchronizuoti.
Pastaba: Šis metodas yra paprastas ir patogus įgyvendinti ir nepadidins duomenų bazės naštos, tačiau jei klientas išjungia slapukus, sesijos negalima sinchronizuoti, o tai atneš nuostolių svetainei; Slapukai nėra labai saugūs ir, nors jie buvo užšifruoti, jie vis tiek gali būti suklastoti.

3. Naudokite "memcache" seansams sinchronizuoti
"Memcache" gali būti platinamas, o be šios funkcijos jis negali būti naudojamas sesijos sinchronizavimui. Jis gali sujungti atmintį žiniatinklio serveryje, kad taptų "mempool", nesvarbu, kuris serveris generuoja sessoin, jis gali būti įdėtas į šį "mempool", ir visa kita gali būti naudojama.
Privalumai: tokiu būdu sinchronizuojant seansus nepadidėja duomenų bazės našta, o saugumas labai pagerėja, palyginti su slapukų naudojimu, o seansų įdėjimas į atmintį yra daug greitesnis nei skaitymas iš failų.
Trūkumai: memcache padalija atmintį į daugelį saugojimo blokų specifikacijų, yra blokų ir dydžių, tokiu būdu taip pat nustatoma, memcache negali visiškai išnaudoti atminties, sukels atminties fragmentaciją, jei atminties bloko nepakanka, tai taip pat sukels atminties perpildymą.

Ketvirta, santrauka
Visi trys aukščiau išvardyti metodai yra įmanomi
Pirmasis metodas, kuris labiausiai veikia sistemos greitį, nerekomenduojamas;
Antrasis metodas duoda gerų rezultatų, tačiau saugos pavojai yra tokie patys;
Trečiasis metodas, aš asmeniškai manau, kad trečiasis metodas yra geriausias, rekomenduoju visiems jį naudoti;




Ankstesnis:Mūsų mokykla tikrai turtinga
Kitą:Išleistuvių sezonas Parodykite savo išleistuvių nuotraukas ir klasės nuotraukas!
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com