1.5.1 Node應(yīng)用場(chǎng)景
Node面向網(wǎng)絡(luò)并且擅長(zhǎng)I/O迂卢,能夠有效地阻止起更多的硬件資源,從而提供更好的服務(wù)
I/O密集的優(yōu)勢(shì)主要在與Node利用事件循環(huán)的處理能力谊路,而不是啟動(dòng)每一個(gè)線程為每一個(gè)請(qǐng)求服務(wù)其做,資源占用極少
1.5.2 是否不擅長(zhǎng)CPU密集型業(yè)務(wù)
I/O阻塞造成的性能浪費(fèi)遠(yuǎn)比CPU的影響小。對(duì)于長(zhǎng)時(shí)間運(yùn)行的計(jì)算凌唬,如果它的耗時(shí)超過(guò)普通阻塞I/O的耗時(shí)并齐,那么應(yīng)用場(chǎng)景就需要重新評(píng)估。通過(guò)子進(jìn)程的方式客税,將一部分Node進(jìn)程當(dāng)作常駐服務(wù)進(jìn)程用于計(jì)算况褪,然后利用進(jìn)程間的消息來(lái)傳遞結(jié)果,將計(jì)算與I/O分離 更耻,CPU密集不可怕测垛,如何合理調(diào)度是訣竅
2.2 Node的模塊實(shí)現(xiàn)
在Node中引入模塊,需要經(jīng)歷如下3個(gè)步驟
1.路徑分析
2.文件定位
3.編譯執(zhí)行
在node中秧均,模塊分為兩類(lèi)食侮,一類(lèi)是node提供的模塊,稱(chēng)為 核心模塊目胡;另一類(lèi)是用戶(hù)編寫(xiě)的模塊锯七,稱(chēng)為文件模塊
- 核心模塊在node源代碼的編譯過(guò)程中,編譯進(jìn)了二進(jìn)制執(zhí)行文件讶隐。在node進(jìn)程啟動(dòng)時(shí)起胰,部分核心模塊就直接被直接加載到了內(nèi)存中,所以 核心模塊引入時(shí),文件定位和編譯執(zhí)行兩個(gè)步驟可以省略效五,并且在路徑分析中優(yōu)先判斷地消,
- 文件模塊則是在運(yùn)行時(shí)動(dòng)態(tài)加載,需要完整的 路徑分析畏妖,文件定位和編譯執(zhí)行脉执。