sql >> Database >  >> NoSQL >> MongoDB

Hoe gaan we om met prioriteitsverzoeken in express/nodejs?

In node.js wordt slechts één verzoek tegelijk uitgevoerd (de Javascript-interpreter is single-threaded) totdat u een soort asynchrone bewerking in native code uitvoert en dan wordt een ander verzoek gestart terwijl de andere wacht op I/O . Als er een beperkte bron is waar alle verzoeken naar op zoek zijn, is het gewoon een race om te zien welk verzoek ver genoeg door uw code gaat om de bron te krijgen. Als u uw server clustert voor extra schaalbaarheid, voert elke cluster één Javascript-thread uit.

Als je elk binnenkomend verzoek in een wachtrij laat wachten totdat alle andere verzoeken die ervoor kwamen volledig zijn gedaan (iets dat zou kunnen worden gedaan), dan zou je de schaalbaarheid van je node.js-server ernstig verpesten en meestal zou het zit inactief te wachten op een I/O-bewerking, dus het lijkt onwaarschijnlijk dat dit het juiste ontwerp is.

Het gebruikelijke schema hier is om het eerste verzoek dat binnenkomt om de bron te claimen het gewoon te laten hebben (ook al kunnen er meerdere bronnen tegelijkertijd actief zijn). Of dit altijd het verzoek is dat voor het eerst op uw server is aangekomen of niet, zal niet bekend zijn, maar het zal dichtbij zijn en de gebruikersgemeenschap zal waarschijnlijk niet weten of het een paar milliseconden is afgeweken, alleen vanwege de variantie in verwerkingssnelheid van twee verzoeken.

U moet ervoor zorgen dat uw code die toegang heeft tot gedeelde bronnen (zoals databases) veilig is voor gelijktijdigheid en geen lastige veronderstellingen maakt over gedeelde gegevens.




  1. Vind laatste document van de dag van de afgelopen 7 dagen

  2. MongoDB sorteert documenten op geneste gegevens

  3. Een item uit de array verwijderen met het MongoDB-Java-stuurprogramma

  4. Python-database programmeren met MongoDB voor beginners