Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 2945|Atbildi: 0

Nginx slodzes balansēšana novērš aizmugures SESSION viena punkta problēmu

[Kopēt saiti]
Publicēts 10.01.2023 20:38:39 | | | |
Prasības: Izmantojiet Nginx, lai izveidotu reverso starpniekserveri, kas ir atbildīgs par visu pieprasījumu plānošanu, aizmugures sistēmu izstrādā ASP.NET MVC un izvieto vairākos dažādos serveros, veidojot aizmugures klasteriSesijas informāciju nevar kopīgot, kā rezultātā daži pieprasījumi netiek pareizi apstrādāti。 Radīsies šādas problēmas:





ASP.NET Tīmekļa vietni var saukt šādi:

asp.net sesijas koplietošana (izmantojot StateServer)
https://www.itsvse.com/thread-6613-1-1.html

. Neto izkliedētā arhitektūra: sesiju koplietošana, pamatojoties uz Redis
https://www.itsvse.com/thread-5189-1-1.html

Parasti izmantotie risinājumi ir šādi:

Datu bāzes izmantošana SESSION glabāšanai

Tā kā katram serverim ir jāizmanto viena un tā pati sesija, mēs varam saglabāt sesiju tajā pašā datu bāzē, katru reizi, kad mēs piekļūstam, mēs dodamies uz datu bāzi, lai pārbaudītu, vai ir šī sesija vai arī šī sesija ir beigusies, un pēc tam mēs varam sinhronizēt vairāku serveru sesiju;

Nopelniem:Šīs metodes izmantošana ir vienkārša, ērta un viegli sākama;

Trūkums:Datu bāzes izmantošana sesiju sinhronizēšanai palielinās datu bāzes IO un palielinās datu bāzes slogu. Tajā pašā laikā katrai piekļuvei ir jāpārtver pieprasījumi un jāvaicā datu bāzē, kā rezultātā rodas papildu piekļuves slānis un izšķērdēts datu bāzes sesijas laiks.


Izmantojiet kešatmiņas mehānismu, piemēram, Memcache vai Redis, lai saglabātu SESSION

Izkliedētu kešatmiņas mehānismu, piemēram, memcache vai redis, izmantošana sesiju datu glabāšanai ir populārs risinājums slodzes līdzsvarošanai un sinhronām sesijām daudzos liela mēroga projektos. Tās princips ir tāds, ka projekts izmanto memcache vai redis kešatmiņu tajā pašā vietā, kad lietotājs piesakās, sesija tiks saglabāta kešatmiņā, un pēc tam neatkarīgi no tā, kuram projekta serverim tiek piekļūts, sesijas kešatmiņa tiks iegūta no tās pašas vietas, lai sesijas sinhronizācija būtu viegli realizēta;

Nopelniem:Kešatmiņas izmantošana sesiju sinhronizēšanai nepalielinās datu bāzes slogu, kā arī jums nav manuāli jāspriež, vai sesija pastāv vai beidzas, novēršot dažas biznesa loģikas.

Trūkums:Memcache vai Redis sadala atmiņu daudzās atmiņas bloku specifikācijās, un ir bloki ar izmēriem, kas arī nosaka, ka Memcache vai Redis nevar pilnībā izmantot atmiņu, kas radīs atmiņas sadrumstalotību, un, ja atmiņas bloki ir nepietiekami, notiks arī atmiņas pārpilde.

Izmantojiet ip_hash modeli Nginx

Šī metode, kas pazīstama arī kā sesijas uzturēšana, ir ip_hash tehnoloģija nginx, kas ļauj jumsPieprasījumi no noteiktas IP adreses tiek piesprausti tam pašam aizmugures lietojumprogrammu serverim, lai klients un aizmugursistēma zem šī IP varētu izveidot stabilu sesiju.

(Bet ir arī trūkums, ja operatora tīkls ir svārstīgāks un nestabilāks,Izejas IP ir dinamisksJā, ar šo metodi būs problēmas. )

Testa metode ir atvērt divas vietas, kuru pamatā ir doks,Jums ir jāizveido jauns index.html fails attiecīgi /data/testsite/a un /data/testsite/b direktorijās, komanda ir šāda:

Piekļūstiet, izmantojot pārlūkprogrammu, kā parādīts tālāk.



Ja izveidojat jaunu nginx konteineru, pamatojoties uz Docker, neizmantojot ip_hash tehnoloģiju, pieprasījumu var nosūtīt uz dažādiem aizmugures serveriem, kā parādīts zemāk redzamajā attēlā:



Izmantojot ip_hash tehnoloģiju, izveidojiet jaunu failu /data/testsite/nginx.conf ar šādu konfigurāciju:

Docker startēšanas komanda ir šāda:




Sīkdatņu sesijas saglabāšana, ar kuru var iepazīties fiksētajā modulī, ir izlaista

Nginx konfigurācija:Hipersaites pieteikšanās ir redzama.

(Beigas)




Iepriekšējo:【Praktiskā darbība】 Izmantojiet Docker, lai izveidotu Gitlab privāto repozitoriju
Nākamo:IIS URL pārrakstīšanas moduļa kārtulu notīrīšana
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com