sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvordan håndterer vi anmodninger prioritet i express/nodejs?

I node.js kører der faktisk kun én anmodning ad gangen (Javascript-fortolkeren er enkelttrådet), indtil du rammer en slags async-operation i native kode, og så begynder en anden anmodning at køre, mens den anden venter på I/O . Hvis der er en begrænset ressource, som alle forespørgsler er ude efter, er det blot et kapløb for at se, hvilken anmodning der kommer langt nok gennem din kode til at få ressourcen. Hvis du grupperer din server for at øge skalerbarheden, kører hver klynge én Javascript-tråd.

Hvis du fik hver indkommende anmodning til at vente i en kø, indtil alle andre anmodninger, der kom, før den var fuldstændig udført (noget, der kunne gøres), så ville du alvorligt ødelægge skalerbarheden af ​​din node.js-server, og det ville det meste af tiden sidde inaktiv og vente på, at en I/O-operation bliver udført, så det virker usandsynligt, at det er det rigtige design.

Den sædvanlige ordning her er bare at lade den første anmodning, der kommer igennem for at gøre krav på ressourcen, have den (selvom flere ressourcer kan køre på samme tid). Om dette altid er den anmodning, der først ankom til din server eller ej, vides ikke, men det vil være tæt på, og brugerfællesskabet vil næppe vide, om det tilfældigvis blev slukket med et par millisekunder, bare på grund af variansen i behandlingshastighed på to anmodninger.

Du skal sørge for, at din kode, der tilgår delte ressourcer (som databaser), er sikker for samtidighed og ikke gør nogen besværlige antagelser om delte data.




  1. Hvordan modellerer man et mange selvrefererende forhold til mange forældre?

  2. MongoDB og MongoJS - kan ikke få runCommand til at virke for tekstforespørgsler

  3. Hvordan kan jeg tælle månedsvis nutiden i laravel?

  4. MongoDB UpdateFirst-metodebrug