sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur hanterar vi förfrågningar prioritet i express/nodejs?

I node.js körs faktiskt bara en begäran åt gången (Javascript-tolken är entrådad) tills du träffar någon sorts asynkronoperation i inbyggd kod och sedan börjar en annan begäran köras medan den andra väntar på I/O . Om det finns någon begränsad resurs som alla förfrågningar är ute efter, är det bara ett lopp för att se vilken begäran som når tillräckligt långt genom din kod för att få resursen. Om du klusterar din server för ökad skalbarhet, kör varje kluster en Javascript-tråd.

Om du fick varje inkommande begäran att vänta i en kö tills alla andra förfrågningar som kom innan den var helt klar (något som kunde göras), då skulle du allvarligt förstöra skalbarheten för din node.js-server och för det mesta skulle det sitta inaktiv och vänta på att någon I/O-operation ska göras så det verkar osannolikt att det är rätt design.

Det vanliga schemat här är att bara låta den första begäran som går igenom för att göra anspråk på resursen ha den (även om flera resurser kan köras samtidigt). Huruvida detta alltid är begäran som först kom till din server eller inte kommer inte att vara känt, men det kommer att vara nära och användargemenskapen är osannolikt att veta om den råkade vara avstängd med några millisekunder bara på grund av variansen i behandlingshastighet för två förfrågningar.

Du måste se till att din kod som kommer åt delade resurser (som databaser) är säker för samtidighet och inte gör några besvärliga antaganden om delad data.




  1. Multer - hur man hanterar filer med upload.fields() när filer har skickats

  2. Returnerar underdokumentarray genom Meteor / Mongo

  3. Kan inte ansluta Mongo-skal till Mongo Atlas M0 med mongodb+srv

  4. Hur man exporterar Redis-nycklar som CSV med CLI