Nõuded: Kasuta Nginx-i pöördproksi ehitamiseks, mis vastutab kõigi päringute ajastamise eest, taustsüsteemi arendab ASP.NET MVC ja see juurutatakse mitmele erinevale serverile, moodustades taustaklastriSessiooni infot ei saa jagada, mistõttu mõningaid päringuid ei töödelda korrektselt。 Järgnevad probleemid tekivad:
ASP.NET Veebilehte võib nimetada järgmiselt:
Levinumad lahendused on järgmised:
Kasuta andmebaasi SESSION-i salvestamiseks
Kuna iga server peab kasutama sama sessiooni, saame sessiooni salvestada samasse andmebaasi; iga kord, kui sellele ligi pääseme, läheme andmebaasi, et kontrollida, kas see sessioon on olemas või kas see sessioon on aegunud, ning seejärel saame sünkroniseerida mitme serveri sessiooni;
Merit:Selle meetodi kasutamine on lihtne, mugav ja lihtne alustada;
Puudus:Andmebaasi kasutamine sessioonide sünkroniseerimiseks suurendab andmebaasi IO-d ja koormust andmebaasile. Samal ajal peab iga ligipääs kinni püüdma päringuid ja päringuid andmebaasis, mis toob kaasa täiendava ligipääsu kihi ja raisatud andmebaasi sessiooniaega.
Kasuta vahemällu salvestamise mehhanismi nagu Memcache või Redis SESSION-i salvestamiseks
Hajutatud vahemälumehhanismide, nagu memcache või redis, kasutamine sessiooniandmete salvestamiseks on populaarne lahendus koormuse tasakaalustamiseks ja sünkroonsessioonideks paljudes suuremahulistes projektides. Selle põhimõte on, et projekt kasutab memcache'i või redis vahemälu samas kohas, kui kasutaja sisse logib, salvestatakse sessioon vahemällu ning olenemata sellest, millisele serverile projektist ligi pääsetakse, saadakse sessioonivahemälu samast kohast, nii et sessiooni sünkroniseerimine on lihtne teostada;
Merit:Vahemälu kasutamine sessioonide sünkroniseerimiseks ei suurenda andmebaasi koormust ega pea käsitsi hindama, kas sessioon eksisteerib või aegub, mis välistab osa äriloogikast.
Puudus:Memcache või Redis jagab mälu paljudeks salvestusplokkide spetsifikatsioonideks ning on olemas plokke suurusega, mis määrab ka, et Memcache või Redis ei suuda mälu täielikult kasutada, mis põhjustab mälu killustumist, ning kui salvestusplokid on ebapiisavad, tekib ka mälu ületäitumine.
Kasuta ip_hash mustrit Nginxis
See tehnika, tuntud ka kui sessioonide hoidmine, on nginxis ip_hash tehnoloogia, mis võimaldab sulPäringud teatud IP-aadressilt kinnitatakse samale taustarakenduse serverile, et klient ja selle IP all olev taustsüsteem saaksid luua stabiilse sessiooni.
(Kuid on ka puudus, kui operaatori võrk on ebastabiilsem ja ebastabiilsem,Väljumis-IP on dünaamilineJah, selle meetodiga võib tekkida probleeme. )
Testimeetod on avada kaks saiti dockeri alusel,Pead looma uue index.html faili vastavalt kataloogides /data/testsite/a ja /data/testsite/b, käsk on järgmine:
Ligipääs brauseri kaudu, nagu allpool näidatud:
Kui loote uue nginx-konteineri Dockeri baasil, ilma ip_hash tehnoloogiat kasutamata, saab päringu saata erinevatele tagaserveritele, nagu alloleval joonisel näidatud:
Kasutades ip_hash tehnoloogiat, loo uus /data/testsite/nginx.conf fail järgmise konfiguratsiooniga:
Dockeri käivituskäsk on järgmine:
(Küpsistepõhine sessioonide hoidmine, mida saab kasutada kleepmoodulis, jäeti välja)
Nginx konfiguratsioon:Hüperlingi sisselogimine on nähtav.
(Lõpp)
|