Požiadavky: Použite Nginx na vytvorenie reverzného proxy, ktorý je zodpovedný za plánovanie všetkých požiadaviek, backend vyvíja ASP.NET MVC a nasadzuje sa na viacerých serveroch, čím vzniká backendový klasterInformácie o relácii nie je možné zdieľať, čo vedie k tomu, že niektoré požiadavky nie sú správne spracované。 Objavia sa nasledujúce problémy:
ASP.NET Webová stránka môže byť označená nasledovne:
Bežne používané riešenia sú nasledovné:
Použite databázu na uloženie SESSION
Keďže každý server musí používať rovnakú reláciu, môžeme reláciu uložiť do tej istej databázy, zakaždým, keď pristupujeme, ideme do databázy, aby sme skontrolovali, či táto relácia existuje, alebo či už vypršala, a potom môžeme synchronizovať reláciu viacerých serverov;
Zásluha:Používanie tejto metódy je jednoduché, pohodlné a ľahko začať;
Nedostatok:Použitie databázy na synchronizáciu relácií zvýši IO databázy a zvýši zaťaženie databázy. Zároveň musí každý prístup zachytávať požiadavky a dotazovať databázu, čo vedie k ďalšej vrstve prístupu a zbytočnému času v databázovej relácii.
Použite mechanizmus cache, ako je Memcache alebo Redis na uloženie SESSION
Použitie distribuovaných cache mechanizmov, ako sú memcache alebo redis na ukladanie dát relácií, je populárnym riešením na vyvažovanie záťaže a synchronné relácie v mnohých veľkých projektoch. Jej princípom je, že projekt používa memcache alebo redis cache na tom istom mieste, keď sa používateľ prihlási, relácia sa uloží do cache a potom bez ohľadu na to, ktorý server projektu je prístupný, cache relácie sa získa z toho istého miesta, takže synchronizácia relácie je ľahko dosiahnuteľná;
Zásluha:Použitie cache na synchronizáciu relácií nezvýši záťaž na databázu, ani nemusíte manuálne posudzovať, či relácia existuje alebo vyprší, čím sa eliminuje časť obchodnej logiky.
Nedostatok:Memcache alebo Redis rozdeľuje pamäť na mnohé špecifikácie úložiskových blokov a existujú bloky s veľkosťou, čo tiež určuje, že memcache alebo redis nemôžu plne využiť pamäť, čo spôsobí fragmentáciu pamäte, a ak sú úložné bloky nedostatočné, dôjde aj k pretečeniu pamäte.
Využite ip_hash vzor v Nginx
Táto technika, známa aj ako session keeping, je ip_hash technológiou v nginx, ktorá vám umožňujePožiadavky z určitej IP adresy sú pripnuté na ten istý backendový aplikačný server, takže klient a backend pod touto IP môžu vytvoriť stabilnú reláciu.
(Ale existuje aj nevýhoda, ak je sieť operátora volatilnejšia a nestabilnejšia,Výstupná IP je dynamickáÁno, s touto metódou budú problémy. )
Testovacia metóda spočíva v otvorení dvoch lokalít na základe dockeru,Musíte vytvoriť nový index.html súbor v adresároch /data/testsite/a a /data/testsite/b, príkaz je nasledovný:
Prístup cez prehliadač, ako je uvedené nižšie:
Ak vytvoríte nový nginx kontajner založený na Dockeri bez použitia ip_hash technológie, požiadavka môže byť odoslaná na rôzne backend servery, ako je znázornené na obrázku nižšie:
Pomocou ip_hash technológie vytvorte nový súbor /data/testsite/nginx.conf s nasledujúcou konfiguráciou:
Docker launch command je nasledovný:
(Uchovávanie relácií založené na cookies, ktoré je možné konzultovať v pripnutom module, bolo vynechané)
Konfigurácia Nginx:Prihlásenie na hypertextový odkaz je viditeľné.
(Koniec)
|