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:
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)
|