Zahteve: Uporabite Nginx za izdelavo obratnega proxyja, ki je odgovoren za načrtovanje vseh zahtev, zaledje razvija ASP.NET MVC in ga namešča na več različnih strežnikov, kar tvori zaledni grozdInformacije o sejah ni mogoče deliti, zaradi česar nekatere zahteve niso pravilno obdelane。 Pojavile se bodo naslednje težave:
ASP.NET Spletno stran lahko imenujemo takole:
Najpogosteje uporabljene rešitve so naslednje:
Uporabite bazo podatkov za shranjevanje SESSION
Ker mora vsak strežnik uporabljati isto sejo, lahko sejo shranimo v isto bazo podatkov, vsakič, ko dostopamo, gremo v bazo, da preverimo, ali obstaja ta seja ali ali je seja potekla, nato pa lahko sinhroniziramo sejo več strežnikov;
Zasluga:Uporaba te metode je preprosta, priročna in enostavna za začetek;
Pomanjkljivost:Uporaba baze podatkov za sinhronizacijo sej bo povečala vhodno-izhod baze podatkov in povečala obremenitev baze podatkov. Hkrati mora vsak dostop prestrezati zahteve in poizvedovati v bazi podatkov, kar pomeni dodatno plast dostopa in izgubo časa seje baze podatkov.
Uporabite mehanizem predpomnjenja, kot sta Memcache ali Redis, za shranjevanje SESSION
Uporaba porazdeljenih mehanizmov predpomnjenja, kot sta memcache ali redis, za shranjevanje podatkov sej, je priljubljena rešitev za uravnoteženje obremenitve in sinhrone seje v številnih velikih projektih. Njegovo načelo je, da projekt uporablja memcache ali redis predpomnilnik na istem mestu; ko se uporabnik prijavi, se seja shrani v predpomnilnik, nato pa ne glede na to, kateri strežnik projekta je dostopan, se sejni predpomnilnik pridobi z istega mesta, tako da je sinhronizacija sej enostavna;
Zasluga:Uporaba predpomnilnika za sinhronizacijo sej ne bo povečala bremena za bazo podatkov, prav tako vam ni treba ročno presojati, ali seja obstaja ali poteče, s čimer odpravite nekaj poslovne logike.
Pomanjkljivost:Memcache ali Redis razdeli pomnilnik na številne specifikacije shranjevalnih blokov, obstajajo pa tudi bloki z velikimi velikostmi, kar prav tako določa, da Memcache ali Redis ne moreta v celoti izkoristiti pomnilnika, kar povzroči fragmentacijo pomnilnika, in če so bloki za shranjevanje nezadostni, pride tudi do presežka pomnilnika.
Izkoristite vzorec ip_hash v Nginx
Ta tehnika, znana tudi kot session keeping, je ip_hash tehnologija v nginx, ki vam omogočaZahteve z določenega IP naslova so pritrjene na isti strežnik aplikacij v ozadju, tako da lahko odjemalec in backend pod tem IP-jem vzpostavita stabilno sejo.
(Obstaja pa tudi slabost, če je operaterjevo omrežje bolj nestanovitno in nestabilno,Izhodni IP je dinamičenDa, s to metodo bodo težave. )
Testna metoda je odpiranje dveh lokacij na podlagi dockerja,Ustvariti morate novo index.html datoteko pod imenikoma /data/testsite/a in /data/testsite/b, ukaz je naslednji:
Dostop preko brskalnika, kot je prikazano spodaj:
Če ustvarite nov nginx kontejner na osnovi Dockerja brez uporabe ip_hash tehnologije, se zahteva lahko pošlje na različne strežnike v ozadju, kot je prikazano na spodnji sliki:
Z uporabo ip_hash tehnologije ustvarite novo datoteko /data/testsite/nginx.conf z naslednjo konfiguracijo:
Docker zagonski ukaz je naslednji:
(Shranjevanje sej, ki temelji na piškotkih, ki ga je mogoče pregledati v pripetem modulu, je izpuščeno)
Konfiguracija Nginx:Prijava do hiperpovezave je vidna.
(Konec)
|