第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Swoole比Node.js有哪些優(yōu)勢(shì)?有哪些知名的Swoole案例

Swoole比Node.js有哪些優(yōu)勢(shì)?有哪些知名的Swoole案例

慕姐4208626 2018-11-05 04:04:31
Swoole比Node.js有哪些優(yōu)勢(shì)?有哪些知名的Swoole案例
查看完整描述

1 回答

?
不負(fù)相思意

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超10個(gè)贊

多核并行
node.js的event loop是單進(jìn)程單線程的,只有一個(gè)epoll/kqueue事件輪詢被執(zhí)行。所以無法利用到多核的計(jì)算優(yōu)勢(shì)。
swoole的event loop是多線程的,是基于epoll/kqueue的Multi-Reactor模型。這點(diǎn)與nginx/golang相同。另外swoole的多線程Reactor之間不存在鎖,這點(diǎn)與nginx不同。它啟用了專門的accept線程,類似與JAVA的netty。
所以在多核CPU的機(jī)器上,node.js對(duì)網(wǎng)絡(luò)IO事件的處理能力絕對(duì)是要差swoole數(shù)倍的,在4核的機(jī)器上至少要查2-3倍。
雖然node.js也提供了多線程的擴(kuò)展,但對(duì)于event_loop來說必須是內(nèi)核提供,擴(kuò)展不行的。
另外node.js未來是否會(huì)改造成為多線程Reactor,我估計(jì)不會(huì),這不是技術(shù)上的難題。而是一旦改成多線程Reactor,node.js恐怕就不是node.js了。失去了原來單線程的各種優(yōu)勢(shì)后,反而會(huì)一無是處。當(dāng)然可能node.js官方開發(fā)組會(huì)思考出解決問題的巧妙辦法,一切都是后話了。
不只是event_loop,執(zhí)行用戶層代碼是也是單線程的,不能利用多核計(jì)算優(yōu)勢(shì)。需要用戶自己去fork多進(jìn)程或者創(chuàng)建線程池。使用難度增加了很多。不像swoole,配置一下參數(shù)即可,是天然多進(jìn)程。
異步網(wǎng)絡(luò)IO
node.js和swoole都是基于epoll/kqueue實(shí)現(xiàn)的全異步非阻塞IO,所以這方面大同小異,沒有差別。維持TCP長(zhǎng)連接的能力是一樣的。
node.js在這里有一個(gè)優(yōu)勢(shì)就是它支持windows的IOCP。swoole僅支持Linux/FreeBSD/MacOS的epoll/kqueue.
異步文件讀寫
node.js和swoole都提供了基于線程池的異步文件讀寫,DNS查詢功能。node.js最早基于libeio實(shí)現(xiàn),后來才自行實(shí)現(xiàn)線程池。swoole一開始就基于線程池設(shè)計(jì)的。
實(shí)際上這里都是通過多線程阻塞來模擬的,并非真正的異步讀寫文件。比如同時(shí)讀寫數(shù)百個(gè)文件時(shí),性能遠(yuǎn)不如普通的多進(jìn)程PHP程序。
swoole中還提供了Linux Native AIO的支持,是真正的內(nèi)核層異步并行文件讀寫,不過需要通過修改宏開關(guān),重新編譯才可以使用。
最后結(jié)論
node.js和swoole比沒有明顯優(yōu)勢(shì),僅在Windows支持方面比swoole要好。node.js中有的特性swoole中都有。個(gè)人認(rèn)為Node.js最大的優(yōu)勢(shì)在于:
node.js使用JavaScript語言,與瀏覽器、HTML之間的融合度非常高,使用同一種語言既寫前端又寫后端
支持Windows平臺(tái),利用node-webkit,可以開發(fā)PC客戶端軟件
node.js的定位應(yīng)該是前端與后端結(jié)合非常緊密的應(yīng)用場(chǎng)景。如websocket推送,JSON-RPC,輕量級(jí)HTTP接口。
而對(duì)于真正專業(yè)的后端領(lǐng)域,分布式系統(tǒng),node.js不適合。


查看完整回答
反對(duì) 回復(fù) 2018-11-15
  • 1 回答
  • 0 關(guān)注
  • 1385 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)