Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 2945|Vastaus: 0

Nginx-kuormantasaus ratkaisee taustajärjestelmän SESSION yhden pisteen ongelman

[Kopioi linkki]
Julkaistu 10.1.2023 20.38.39 | | | |
Vaatimukset: Käytä Nginxiä käänteisen välityspalvelimen rakentamiseen, joka vastaa kaikkien pyyntöjen aikatauluttamisesta, taustajärjestelmän kehittää ASP.NET MVC ja se on otettu käyttöön useille eri palvelimille, muodostaen taustaklusterinIstuntotietoja ei voida jakaa, mikä johtaa siihen, että jotkut pyynnöt eivät käsitellä oikein。 Seuraavat ongelmat tulevat esiin:





ASP.NET Verkkosivustoa voidaan kutsua seuraavasti:

asp.net istunnon jakaminen (StateServerin kautta)
https://www.itsvse.com/thread-6613-1-1.html

. Nettihajautettu arkkitehtuuri: Sessioiden jakaminen Redis-pohjaisesti
https://www.itsvse.com/thread-5189-1-1.html

Yleisesti käytetyt ratkaisut ovat seuraavat:

Käytä tietokantaa SESSIONin tallentamiseen

Koska jokaisen palvelimen täytyy käyttää samaa istuntoa, voimme tallentaa istunnon samaan tietokantaan; joka kerta kun pääsemme tietokantaan, tarkistamme, onko kyseinen istunto vai onko istunto vanhentunut, ja voimme synkronoida useiden palvelimien istunnon;

Ansio:Tämän menetelmän käyttö on yksinkertaista, kätevää ja helppo aloittaa;

Puute:Tietokannan käyttäminen istuntojen synkronointiin lisää tietokannan IO:ta ja lisää tietokannan kuormitusta. Samaan aikaan jokaisen pääsyn täytyy siepata pyynnöt ja tehdä kyselyt tietokannasta, mikä johtaa lisäkerrokseen pääsyä ja hukkaan menevää tietokantaistuntoaikaa.


Käytä välimuistimekanismia, kuten Memcachea tai Redisiä, tallentaaksesi SESSIONin

Hajautettujen välimuistimekanismien, kuten memcachen tai redisin, käyttäminen istuntotietojen tallentamiseen on suosittu ratkaisu kuormantasaukseen ja synkronisiin sessioihin monissa suurissa projekteissa. Sen periaate on, että projekti käyttää memcache- tai redis-välimuistia samassa paikassa, kun käyttäjä kirjautuu sisään, istunto tallennetaan välimuistiin, ja riippumatta siitä, mitä projektin palvelinta käytetään, istuntovälimuisti saadaan samasta paikasta, jolloin istuntojen synkronointi on helppo toteuttaa;

Ansio:Välimuistin käyttö istuntojen synkronointiin ei lisää tietokannan kuormitusta, eikä sinun tarvitse manuaalisesti arvioida, onko istunto olemassa vai vanheneeko, mikä poistaa osan liiketoimintalogiikasta.

Puute:MemCache tai Redis jakaa muistin moniin tallennuslohkojen määrittelyihin, ja on olemassa lohkoja, joiden koko, mikä myös määrittää, ettei Memcache tai Redis pysty täysin hyödyntämään muistia, mikä aiheuttaa muistin pirstoutumista, ja jos tallennuslohkot eivät riitä, tapahtuu myös muistin ylivuotoa.

Hyödynnä ip_hash kuviota Nginxissä

Tämä tekniikka, joka tunnetaan myös nimellä session pitäminen, on nginxin ip_hash teknologia, joka mahdollistaaPyynnöt tietystä IP-osoitteesta kiinnitetään samaan backend-sovelluspalvelimeen, jotta asiakas ja tämän IP:n taustajärjestelmä voivat muodostaa vakaan istunnon.

(Mutta on myös haittapuoli, jos operaattorin verkko on epävakaampi ja epävakaampi,Poistumis-IP on dynaaminenKyllä, tässä menetelmässä tulee olemaan ongelmia. )

Testimenetelmänä avataan kaksi asemaa dockerin perusteella,Sinun täytyy luoda uusi index.html-tiedosto /data/testsite/a ja /data/testsite/b -hakemistoihin, komento on seuraava:

Pääsy selaimen kautta, kuten alla on esitetty:



Jos luot uuden nginx-kontin Dockerin pohjalta ilman ip_hash teknologiaa, pyyntö voidaan lähettää eri backend-palvelimille, kuten alla olevassa kuvassa näkyy:



ip_hash teknologiaa käyttäen luo uusi /data/testsite/nginx.conf -tiedosto seuraavalla kokoonpanolla:

Dockerin käynnistyskomento on seuraava:




Evästepohjainen istuntojen hallinta, jota voi käyttää kiinnitetyssä moduulissa, jätettiin pois

Nginx-konfiguraatio:Hyperlinkin kirjautuminen on näkyvissä.

(Loppu)




Edellinen:【Practical Action】Use Docker to build a Gitlab private repository
Seuraava:IIS URL-moduulin uudelleenkirjoitusmoduulin sääntöjen puhdistus
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com