MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak obsługuje priorytety żądań w express/nodejs?

W node.js, tylko jedno żądanie jest uruchamiane na raz (interpreter Javascript jest jednowątkowy), dopóki nie trafisz jakiejś operacji asynchronicznej w kodzie natywnym, a następnie inne żądanie zacznie działać, podczas gdy drugie czeka na I/O . Jeśli istnieje jakiś ograniczony zasób, którego szukają wszystkie żądania, jest to po prostu wyścig, aby zobaczyć, które żądanie zajdzie wystarczająco daleko w kodzie, aby uzyskać zasób. Jeśli klastrujesz serwer w celu zwiększenia skalowalności, każdy klaster uruchamia jeden wątek JavaScript.

Jeśli sprawisz, że każde przychodzące żądanie będzie czekać w kolejce, aż wszystkie inne żądania, które przychodzą, zanim zostaną całkowicie wykonane (coś, co można zrobić), poważnie zrujnujesz skalowalność serwera node.js i w większości przypadków będzie to siedzieć bezczynnie, czekając na wykonanie jakiejś operacji we/wy, więc wydaje się mało prawdopodobne, że jest to właściwy projekt.

Zwykły schemat polega na tym, aby po prostu pozwolić pierwszemu żądaniu, które przechodzi, aby odebrać zasób (nawet jeśli wiele zasobów może być uruchomionych w tym samym czasie). Nie będzie wiadomo, czy jest to zawsze żądanie, które jako pierwsze dotarło do serwera, czy nie, ale będzie ono bliskie, a społeczność użytkowników raczej nie będzie wiedziała, czy zdarzyło się to o kilka milisekund tylko ze względu na różnice w szybkość przetwarzania dwóch żądań.

Musisz upewnić się, że Twój kod, który uzyskuje dostęp do współdzielonych zasobów (takich jak bazy danych), jest bezpieczny dla współbieżności i nie robi żadnych kłopotliwych założeń dotyczących współdzielonych danych.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongodb Query Aby wybrać rekordy posiadające podany klucz

  2. Wstaw Async Bulk (batch) do MySQL (lub MongoDB?) przez Node.js

  3. najlepszy możliwy projekt schematu bazy danych analizy logów w mongodb

  4. Sterownik Mongodb C# aktualizuje wszystkie elementy podtablicy, gdy tablica jest pusta

  5. Liczba dziesiętna / zmiennoprzecinkowa w manguście dla node.js