Node.js est mono-thread. Le moteur Javascript V8 et certaines bibliothèques internes sont multi-thread. Pour les E/S, le nœud délègue les E/S à l'OS qui peut être multithread.Pourquoi avons-nous besoin d'un pool de connexions dans node.js lorsque le noeud est mono-thread?
Si mon application node.js se connecte au serveur redis ou sql/mariadb, je suppose que je ne devrais pas avoir besoin d'un pool de connexions pour redis ou mysql. En tant que développeur, je crée 1 connexion redis ou mysql et je la réutilise pour envoyer/recevoir des données. Lorsque les données arrivent, le nœud appelle le rappel pour traiter les données.
Je comprends la mise en commun de connexions avec Java/.NET mais elles sont multi-threadées et le regroupement de connexions en Java/.NET a donc un avantage certain.
Ma question est la suivante: Pourquoi avons-nous besoin d'un pool de connexions dans node.js lorsque le noeud est mono-thread? Y a-t-il un avantage? Le noeud ne tirera-t-il pas parti des fonctionnalités multi-thread de l'OS sous-jacent et du moteur javascript sans que le développeur ne doive le faire?
Merci
Merci pour le commentaire et les liens. L'utilisation du pool de connexions redis ou du pool de connexions mysql présente-t-elle un avantage puisque le nœud utilisera son pool de threads interne pour les E/S? – Avneet
Bien sûr, ces pools de connexion vous permettent toujours d'avoir plusieurs connexions partagées et disponibles au lieu de devoir attendre l'ouverture d'une nouvelle connexion. C'est une optimisation quand elle est implémentée correctement. – peteb
@Avneet De plus, les pools de threads de redis et mysql sont toujours exécutés avec libuv comme votre code.Il n'y a donc pas de pool séparé créé par ces paquets. Votre code est implémenté avec ces paquets, votre code est exécuté avec un seul thread, ces pools fournissent simplement des connexions ouvertes qui n'attendent que du travail. Pas besoin d'attendre que la connexion soit ouverte. – peteb