溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

swoole中單線程模式和進(jìn)程模式的優(yōu)缺點(diǎn)是什么

發(fā)布時(shí)間:2020-12-19 10:17:12 來(lái)源:億速云 閱讀:319 作者:小新 欄目:編程語(yǔ)言

這篇文章主要介紹swoole中單線程模式和進(jìn)程模式的優(yōu)缺點(diǎn)是什么,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

單線程模式(SWOOLE_BASE)

這種模式就是傳統(tǒng)的異步非阻塞Server。與Nginx和Node.js等程序是完全一致的。              

在時(shí)間循環(huán)中直接回調(diào)PHP的函數(shù),而不是dispatch投遞任務(wù)。如果回調(diào)函數(shù)中有阻塞操作會(huì)導(dǎo)致Server退化為同步模式。worker_num參數(shù)對(duì)與BASE模式仍然有效,會(huì)啟動(dòng)多個(gè)Worker進(jìn)程。

BASE模式下沒(méi)有Master進(jìn)程的角色

每個(gè)Worker進(jìn)程同時(shí)承擔(dān)了Process模式下Reactor線程和Worker進(jìn)程兩部分職責(zé)

BASE模式下Manager進(jìn)程是可選的,當(dāng)設(shè)置了worker_num=1,并且沒(méi)有使用Task和MaxRequest特性時(shí),底層將直接創(chuàng)建一個(gè)單獨(dú)的Worker進(jìn)程,不創(chuàng)建Manager進(jìn)程

BASE模式的優(yōu)點(diǎn):

BASE模式?jīng)]有IPC開(kāi)銷(xiāo),性能更好

BASE模式代碼更簡(jiǎn)單,不容易出錯(cuò)

BASE模式的缺點(diǎn):

TCP連接是在Worker進(jìn)程中維持的,所以當(dāng)某個(gè)Worker進(jìn)程掛掉時(shí),此Worker內(nèi)的所有連接都將被關(guān)閉

少量TCP長(zhǎng)連接無(wú)法利用到所有Worker進(jìn)程

TCP連接與Worker是綁定的,長(zhǎng)連接應(yīng)用中某些連接的數(shù)據(jù)量大,這些連接所在的Worker進(jìn)程負(fù)載會(huì)非常高。但某些連接數(shù)據(jù)量小,所以在Worker進(jìn)程的負(fù)載會(huì)非常低,不同的Worker進(jìn)程無(wú)法實(shí)現(xiàn)均衡。

BASE模式的適用場(chǎng)景:

如果客戶端連接之間不需要交互,可以使用BASE模式。如Memcache、Http服務(wù)器等。

進(jìn)程模式(SWOOLE_PROCESS)

多進(jìn)程模式是最復(fù)雜的方式,用了大量的進(jìn)程間通信、進(jìn)程管理機(jī)制。適合業(yè)務(wù)邏輯非常復(fù)雜的場(chǎng)景。Swoole提供了完善的進(jìn)程管理、內(nèi)存保護(hù)機(jī)制。 在業(yè)務(wù)邏輯非常復(fù)雜的情況下,也可以長(zhǎng)期穩(wěn)定運(yùn)行。

Swoole在Reactor線程中提供了Buffer的功能,可以應(yīng)對(duì)大量慢速連接和逐字節(jié)的惡意客戶端。另外也提供了CPU親和設(shè)置選項(xiàng),使程序運(yùn)行的效率更好。

進(jìn)程模式的優(yōu)點(diǎn):

連接與數(shù)據(jù)請(qǐng)求發(fā)送是分離的,不會(huì)因?yàn)槟承┻B接數(shù)據(jù)量大某些連接數(shù)據(jù)量小導(dǎo)致Worker進(jìn)程不均衡

Worker進(jìn)程發(fā)送致命錯(cuò)誤時(shí),連接并不會(huì)被切斷

可實(shí)現(xiàn)單連接并發(fā),僅保持少量TCP連接,請(qǐng)求可以并發(fā)地在多個(gè)Worker進(jìn)程中處理

進(jìn)程模式的缺點(diǎn):

存在2次IPC的開(kāi)銷(xiāo),master進(jìn)程與worker進(jìn)程需要使用UnixSocket進(jìn)行通信

不支持某些高級(jí)功能,如sendwait、pause、resume等操作

以上是“swoole中單線程模式和進(jìn)程模式的優(yōu)缺點(diǎn)是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI