Reikalavimai: Naudokite "Nginx", kad sukurtumėte atvirkštinį tarpinį serverį, atsakingą už visų užklausų planavimą, vidinę sistemą sukūrė ASP.NET MVC ir įdiegė keliuose skirtinguose serveriuose, suformuodama galinį klasterįSeanso informacija negali būti bendrinama, todėl kai kurios užklausos apdorojamos netinkamai。 Iškils šios problemos:
ASP.NET Svetainė gali būti vadinama taip:
Dažniausiai naudojami sprendimai:
Duomenų bazės naudojimas SESSION saugojimui
Kadangi kiekvienas serveris turi naudoti tą pačią sesiją, sesiją galime saugoti toje pačioje duomenų bazėje, kiekvieną kartą prisijungę einame į duomenų bazę, kad patikrintume, ar yra ši sesija, ar ši sesija pasibaigė, tada galime sinchronizuoti kelių serverių sesiją;
Nuopelnus:Naudoti šį metodą yra paprasta, patogu ir lengva pradėti;
Trūkumas:Duomenų bazės naudojimas seansams sinchronizuoti padidins duomenų bazės IO ir padidins duomenų bazės naštą. Tuo pačiu metu kiekviena prieiga turi perimti užklausas ir užklausti duomenų bazę, todėl atsiranda papildomas prieigos sluoksnis ir sugaištas duomenų bazės seanso laikas.
Naudokite talpyklos mechanizmą, pvz., Memcache arba Redis, kad išsaugotumėte SESSION
Paskirstytų talpyklos mechanizmų, tokių kaip memcache ar redis, naudojimas sesijos duomenims saugoti yra populiarus apkrovos balansavimo ir sinchroninių seansų sprendimas daugelyje didelio masto projektų. Jo principas yra tas, kad projektas naudoja memcache arba redis talpyklą toje pačioje vietoje, kai vartotojas prisijungia, sesija bus saugoma talpykloje, o tada, nesvarbu, kuris projekto serveris bus pasiektas, sesijos talpykla bus gauta iš tos pačios vietos, kad sesijos sinchronizavimas būtų lengvai realizuotas;
Nuopelnus:Talpyklos naudojimas seansams sinchronizuoti nepadidins duomenų bazės naštos, taip pat nereikės rankiniu būdu spręsti, ar seansas egzistuoja, ar baigiasi, pašalinant tam tikrą verslo logiką.
Trūkumas:"Memcache" arba "Redis" padalija atmintį į daugelį saugojimo blokų specifikacijų, yra blokų su dydžiais, o tai taip pat lemia, kad "Memcache" arba "Redis" negali visiškai išnaudoti atminties, o tai sukels atminties fragmentaciją, o jei atminties blokų nepakanka, taip pat įvyks atminties perpildymas.
Pasinaudokite ip_hash modeliu Nginx
Ši technika, taip pat žinoma kaip sesijos laikymas, yra ip_hash nginx technologija, leidžiantiUžklausos iš tam tikro IP adreso prisegamos prie to paties vidinio programų serverio, kad klientas ir užpakalinė sistema pagal šį IP galėtų sukurti stabilią sesiją.
(Tačiau yra ir trūkumas, jei operatoriaus tinklas yra nepastovesnis ir nestabilesnis,Išėjimo IP yra dinamiškasTaip, su šiuo metodu kils problemų. )
Bandymo metodas yra atidaryti dvi vietas, pagrįstas doku,Turite sukurti naują index.html failą atitinkamai kataloguose /data/testsite/a ir /data/testsite/b, komanda yra tokia:
Prieiga per naršyklę, kaip parodyta toliau:
Jei sukursite naują "nginx" konteinerį, pagrįstą "Docker", nenaudodami ip_hash technologijos, užklausa gali būti siunčiama į skirtingus galinius serverius, kaip parodyta paveikslėlyje žemiau:
Naudodami ip_hash technologiją sukurkite naują failą /data/testsite/nginx.conf su tokia konfigūracija:
"Docker" paleisties komanda yra tokia:
(Slapukais pagrįstas seanso saugojimas, kurį galima peržiūrėti fiksuotame modulyje, praleistas)
Nginx konfigūracija:Hipersaito prisijungimas matomas.
(Pabaiga)
|