Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 2945|Răspunde: 0

Echilibrarea încărcării Nginx rezolvă problema backend-ului cu punct unic SESSION

[Copiază linkul]
Postat pe 10.01.2023 20:38:39 | | | |
Cerințe: Folosește Nginx pentru a construi un reverse proxy, responsabil pentru programarea tuturor cererilor, backend-ul este dezvoltat de ASP.NET MVC și implementat pe mai multe servere diferite, formând un cluster backendInformațiile despre sesiune nu pot fi partajate, ceea ce duce la procesarea corectă a unor cereri。 Următoarele probleme vor apărea:





ASP.NET Site-ul poate fi denumit astfel:

asp.net partajarea sesiunilor (prin StateServer)
https://www.itsvse.com/thread-6613-1-1.html

. Arhitectură distribuită net: Partajare a sesiunilor bazată pe Redis
https://www.itsvse.com/thread-5189-1-1.html

Soluțiile utilizate frecvent sunt următoarele:

Folosește baza de date pentru a stoca SESSION

Deoarece fiecare server trebuie să folosească aceeași sesiune, putem stoca sesiunea în aceeași bază de date, de fiecare dată când accesăm, mergem în baza de date să verificăm dacă există această sesiune sau dacă aceasta a expirat, iar apoi putem sincroniza sesiunea mai multor servere;

Merit:Folosirea acestei metode este simplă, convenabilă și ușor de început;

Neajuns:Folosirea bazei de date pentru a sincroniza sesiunile va crește IO-ul bazei de date și va crește povara asupra acesteia. În același timp, fiecare acces trebuie să intercepteze cererile și să interogheze baza de date, rezultând un strat suplimentar de acces și timp irosit de sesiune în baza de date.


Folosiți un mecanism de cache precum Memcache sau Redis pentru a stoca SESSION

Utilizarea mecanismelor de cache distribuite, precum memcache sau redis, pentru stocarea datelor de sesiune este o soluție populară pentru echilibrarea încărcării și sesiuni sincrone în multe proiecte de mari dimensiuni. Principiul său este că proiectul folosește cache-ul memcache sau redis în același loc, când utilizatorul se autentifică, sesiunea va fi stocată în cache, iar indiferent de serverul proiectului accesat, cache-ul de sesiune va fi obținut din același loc, astfel încât sincronizarea sesiunii să fie realizată ușor;

Merit:Folosirea cache-ului pentru a sincroniza sesiunile nu va crește povara asupra basei de date și nici nu trebuie să judeci manual dacă sesiunea există sau expiră, eliminând astfel o parte din logica de business.

Neajuns:Memcache sau Redis împarte memoria în multe specificații de blocuri de stocare, iar există blocuri cu dimensiuni, ceea ce determină, de asemenea, că memcache sau redis nu pot utiliza complet memoria, ceea ce va produce fragmentare a memoriei, iar dacă blocurile de stocare sunt insuficiente, va apărea și suprasaturarea memoriei.

Folosește modelul ip_hash în Nginx

Această tehnică, cunoscută și sub numele de menținerea sesiunilor, este ip_hash tehnologie din nginx care îți permiteCererile de la o anumită adresă IP sunt fixate pe același server de aplicații backend, astfel încât un client și un backend sub acest IP să poată stabili o sesiune stabilă.

(Dar există și un dezavantaj, dacă rețeaua operatorului este mai volatilă și mai instabilă,IP-ul de ieșire este dinamicDa, vor apărea probleme cu această metodă. )

Metoda de testare este deschiderea a două site-uri bazate pe docker,Trebuie să creezi un nou fișier index.html sub directoarele /data/testsite/a și /data/testsite/b, respectiv, comanda este următoarea:

Acces printr-un browser, așa cum este prezentat mai jos:



Dacă creezi un container nginx nou bazat pe Docker, fără a folosi tehnologia ip_hash, cererea poate fi trimisă către diferiți servere backend, așa cum se arată în figura de mai jos:



Folosind tehnologia ip_hash, creați un nou fișier /data/testsite/nginx.conf cu următoarea configurație:

Comanda de pornire Docker este următoarea:




Menținerea sesiunilor bazată pe cookie-uri, care poate fi consultată în modulul fix, a fost omisă

Configurația Nginx:Autentificarea cu hyperlink este vizibilă.

(Sfârșit)




Precedent:【Acțiune practică】Folosește Docker pentru a construi un depozit privat Gitlab
Următor:Rescrierea URL-ului IIS pentru Eliminarea Regulilor Modulului
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com