Comment fonctionne node.js?

Je ne comprends pas plusieurs choses à propos de nodejs. Chaque source d’information dit que node.js est plus évolutif que les serveurs Web threadés standard en raison du manque de threads de locking et de changement de contexte, mais je me demande si node.js n’utilise pas de threads. Que signifie le modèle d’E / S d’événement?

Votre aide est tres apprecie. Merci

Le nœud est complètement piloté par les événements. Fondamentalement, le serveur consiste en un thread traitant un événement après l’autre.

Une nouvelle demande à venir est un type d’événement. Le serveur commence à le traiter et lorsqu’il y a une opération d’E / S bloquante, il n’attend pas qu’il se termine et enregistre une fonction de rappel. Le serveur commence alors immédiatement à traiter un autre événement (peut-être une autre demande). Lorsque l’opération IO est terminée, c’est un autre type d’événement et le serveur le traite (c.-à-d. Continue de travailler sur la demande) en exécutant le rappel dès qu’il a le temps.

Ainsi, le serveur n’a jamais besoin de créer de threads supplémentaires ou de basculer entre les threads, ce qui signifie qu’il a très peu de charge. Si vous souhaitez utiliser pleinement plusieurs cœurs matériels, il vous suffit de lancer plusieurs instances de node.js

Mise à jour Au niveau le plus bas (code C ++, pas Javascript), il existe en réalité plusieurs threads dans node.js: il existe un groupe de travailleurs IO dont le travail consiste à recevoir les interruptions IO et à placer les événements correspondants dans la queue. par le fil principal. Cela empêche l’interruption du thread principal.

Bien que la question soit déjà expliquée depuis longtemps, je pense de la même manière.

Le nœud JS est une technologie à thread unique. Fondamentalement, le créateur de Node JS (Ryan Dahl) craignait que le parallel processing utilisant plusieurs threads ne soit ni le bon ni le plus compliqué.

si node.js n’utilise pas de threads, comment gère-t-il les requêtes simultanées en parallèle?

Ans: C’est une phrase complètement fausse quand vous dites qu’elle n’utilise pas de threads, Node J utilise des threads mais de manière intelligente. Il utilise un seul thread pour servir toutes les requêtes HTTP et plusieurs threads dans le pool de threads (en libuv) pour gérer toute opération de blocage.

Libuv: une bibliothèque pour gérer les E / S asynchrones.

Que signifie le modèle d’E / S d’événement?

Ans: Le bon terme est une E / S non bloquante . Il ne bloque presque jamais comme le dit le site officiel de Node JS. Lorsqu’une requête est envoyée au serveur de noeud, elle ne met jamais la demande en attente. Il prend la demande et commence à exécuter s’il bloque l’opération puis il a été envoyé à la zone des threads de travail et enregistré un rappel pour la même chose dès que l’exécution du code est terminée, il déclenche le même rappel qui créent une réponse et envoient au client respectif.

Lien utile: cliquez ici