Aplicație: Serviți imagini receptive și optimizate din mers prin tăierea/redimensionarea/comprimarea imaginilor principale
Sarcina curenta: 10k cerere pe minut, ~60MBps trafic.
Configurație curentă : NginxPlus LB se află în partea de sus. Mai multe servere de aplicații cu nginx->tomcat. Pe fiecare server de aplicații, imaginile sunt stocate în cache în nginx
Probleme curente:
- Rata de accesare a memoriei cache slabă, deoarece memoria cache este descentralizată, probabilitatea ca aceeași cerere să lovească același server este scăzută.
- Cache duplicat, deși acest lucru poate fi tolerat
- Curățarea memoriei cache este greoaie. Deoarece memoria cache poate fi prezentă pe mai multe servere, pentru curățarea memoriei cache, trebuie curățată de pe toate serverele de aplicații
Soluții potențiale
Hashing consecvent Nginx Load Balancer. Problema cu această abordare este că poate cauza distribuția neuniformă a traficului
Introduceți un strat mijlociu de câteva servere nginx: Un strat dedicat de cache nginx poate fi introdus între LB și serverele de aplicații. Dar să spunem că păstrez 3 servere în acest strat, totuși are aceeași problemă de memorare în cache duplicat și de curățare dureri de cap, deși magnitudini mai mici.
I/O pe disc ar putea fi o problemă în cazul unui singur nginx
Are cineva experienta in rezolvarea acestui caz de utilizare? Să nu fie cu nginx. Simțiți-vă liber să vă împărtășiți gândurile.