javascript - Perbandingan senario konkurensi nod dan java, sila bantu jelaskan
曾经蜡笔没有小新
曾经蜡笔没有小新 2017-05-17 10:08:00
0
1
586

Andaikanprogram nod dipasang di bawah satu terasAtur cara ini adalah pelayan http Apabila permintaan masuk, hasilnya dikembalikan dengan kelewatan selama 5 saat (boleh difahami bahawa 5s. penyegerakanmelakukan sesuatu)

Apabila 3 permintaan masuk pada masa yang sama, senario manakah yang akan terhasil:

Senario 1: Permintaan pertama mendapat keputusan selepas 5 saat, permintaan kedua dan ketiga mendapat keputusan selepas 10s dan 15s
Senario 2: Semua permintaan dapatkan hasil selepas 5 saat

Apakah jenis senario yang akan berlaku jika kita bertukar kepada java+tomcat?
曾经蜡笔没有小新
曾经蜡笔没有小新

membalas semua(1)
洪涛

Jika ia synchronous, kelewatan ialah 5 saat dan node.js ialah operasi satu benang yang mudah tanpa menambah kelompok dan pengoptimuman lain同步的 延迟 5秒,且 node.js 为简单的单线程运行,不加入 cluster 等优化

const start = Date.now();
while(Date.now() - start < 5000) {
    ;   
}
return res.send();

那么,多个请求同时发起时,场景1

但通常在 node.js 很少真的碰到完全阻塞的同步等待 5 秒,如果是下列情况:

setTimeOut(() => { return res.send(); }, 5000);

那结果当然是场景2 rrreee

Jadi, apabila berbilang permintaan dimulakan pada masa yang sama, senario 1

Tetapi biasanya dalam node.js jarang sekali menemui penyegerakan menunggu selama 5 saat yang disekat sepenuhnya, jika situasi berikut berlaku:

rrreee

Hasilnya sudah tentu Senario 2🎜 🎜Bagi Java, concurrency disokong oleh multi-threading Apabila prestasi mencukupi, sebagai contoh, concurrency hanya 3, ia boleh dianggap secara kasar sebagai: Senario 2. Sudah tentu, disebabkan overhed benang yang terlibat, selepas konkurensi meningkat, penggunaan memorinya akan jauh melebihi model node.js🎜 🎜Malah, inilah sebabnya kami mengatakan node.js lebih sesuai untuk senario intensif IO dan pengkomputeran rendah. Anda boleh rujuk jawapan saya yang lain🎜
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan