Supposons queun programme de nœud soit installé sous un seul cœurCPU. Le programme est très simple. Lorsqu'une requête arrive, le résultat est renvoyé avec un délai de 5 secondes (il est compréhensible que 5s). la synchronisationfait quelque chose)
Lorsque 3 requêtes arrivent en même temps, quel scénario sera le résultat :
Scénario 1 : La première requête obtient le résultat après 5 secondes, les deuxième et troisième requêtes obtiennent le résultat après 10 s et 15 s
Scénario 2 : Toutes les requêtes obtenez des résultats après 5 secondes
Quel genre de scénario cela sera-t-il si nous passons à Java+Tomcat ? Merci à tous !
S'il est
synchrone
, le délai est de 5 secondes et node.js est une simple opération monothread, sans ajout de cluster et autres optimisations同步的
延迟 5秒,且 node.js 为简单的单线程运行,不加入 cluster 等优化那么,多个请求同时发起时,场景1
但通常在 node.js 很少真的碰到完全阻塞的
同步等待 5 秒
,如果是下列情况:那结果当然是
Ainsi, lorsque plusieurs requêtes sont initiées en même temps, scénario 1场景2
rrreeeattente de synchronisation de 5 secondes
complètement bloquée, si la situation suivante se produit :rrreee
Le résultat est bien sûr leScénario 2
🎜 🎜Quant à Java, la simultanéité est prise en charge par le multi-threading. Lorsque les performances sont suffisantes, par exemple, la simultanéité n'est que de 3, cela peut être grossièrement considéré comme : Scénario 2. Bien sûr, en raison de la surcharge du thread impliquée, après l'augmentation de la concurrence, son utilisation de la mémoire dépassera de loin le modèle node.js🎜 🎜En fait, c'est pourquoi nous disons que node.js est plus adapté aux scénarios gourmands en E/S et nécessitant peu de calcul. Vous pouvez vous référer à mon autre réponse🎜