吐槽swoole 原

在吐槽前要交待一下背景,我是一個phper,同時是一個node粉,node的出現讓熟悉js的開發者們不需要再去學習一門新的語言,只需要掌握一些api就能開發後端應用,異步是node最核心的地方,這也使得他能在IO密集的服務器上充分發揮CPU的優勢。當然任何一個產品都不是十全十美的,也有一些坑,熟悉了php同步開發的同學轉到異步的各種callback也可能感覺不爽,但是總會有一些庫來解決這些問題,所以在我看來,nodejs是一個非常不錯的產品。好產品就會有人模仿,這是避免不了,但是總有一些人模仿了還要回頭來罵!


    swoole,一個號稱重新定義php的擴展庫,我到是想問問,你何得何能拿你的產品跟nodejs比?就因爲你寫了幾個併發測試?拿個單進程跟一個多進程服務比,丟不丟人?別欺騙那些剛入道的phper好嗎?就因爲寫了幾個eventloop,加了幾個task,worker就敢拿出來吹噓高性能、異步多線程服務器?稍微會點c,懂點網絡的誰特麼不會寫個eventloop?本來swoole的出現我覺得挺好,畢竟我本身也是一個phper,但是在swoole裏面隨處可見貶低我大node,作爲一個node粉,我忍不了!你要寫的擴展你就好好寫你的擴展,爲個雞巴毛要排擠node?你以爲你這樣貶低,再加上幾個胡亂的併發測試就能phper們認爲你這是跨時代的產品了?什麼比node強太多,什麼node比起swoole完全沒有優勢。我到是想問問,你爲作一個異步服務器,你解決了幾個異步問題??php現在用的這麼多軟件,redis,memcache,mongodb哪一個你能支持異步??


     還有這篇對比nodejs與swoole的文章更是操蛋http://rango.swoole.com/archives/311

     1、多核並行,我不知道是你沒看還是故意矇蔽phper們,nodejs支持的cluster可以隨便開關進程,多核對他來說,僅僅是process的一個小功能而已,而你非要把這個拿出來說,還說node不能發揮多核優勢,那我只能呵呵了。還有提到的node不支持多線程,我到是想問一句,node爲什麼要支持多線程?多線程的程序就一定比多進程的程序性能高?難道我會告訴你他支持多進程reactor?你加了個多線程就覺得nodejs也應該有多線程?笑話。。還有swoole只有一個線程來accept,而nodejs可以多進程accept,用你的話來說,是不是nodejs比swoole強大太了呢??話說到這裏,估計你又要開始拿驚羣說事了,但是我要告訴你,你覺得以nodejs作者的能力解決不了驚羣的問題嗎??驚羣不是任何時候都需要解決,作爲一個長連接服務器,多數情況下是在處理邏輯,不會出現頻繁的打開和關閉連接,所以出現驚羣帶來的性能損失是可以容忍的。如果是有頻繁的打開和關閉連接,那恐怕就得改成http了,用nginx就是一套成熟的解決方案,就更沒swoole什麼事了。


     2、異步網絡IO,這更沒什麼說的了,swoole裏面需要支持的異步一定要在swoole裏面加了才能用,比如現在支持的mysql!但是如果我想用redis、mongo、memcache……更多的網絡軟件,,那要怎麼辦??swoole都給我加一遍好嗎??node核心就是異步,只要是IO操作都能異步處理,這一點是swoole完全沒辦法比的!


     3、異步文件讀寫,作爲一個高性能的服務器,通常不會直接操作文件,都是對內存的數據進行讀寫,那麼對異步文件讀寫的要求就沒有那麼高,所以node使用多線程與swoole使用aio並沒有多大差異,作者把aio都搬了出來,看樣也是真沒什麼有利武器來攻擊node,只好出一些看上去很牛逼的奇招了!


     最後的結束就更是操蛋了,居然說nodejs並沒有明顯優勢!真是不知道天高地厚,誰給你的勇氣?居然說什麼定位是前後端緊密,適合輕量級的http...敢情node的最底層的net模塊被吃了??在你眼裏他就只是一個可以自定義的http server??


    nodejs的進程處理,定時器,異步IO,http(c/s)你都成功模仿了幾個?好好寫的擴展,別一天沒事就來黑我大node,你不配。

   

    另外說一句,我就是在知乎上面噴你那位!說了兩句口頭禪就說我人生攻擊(“你妹的”這算是人生攻擊?),還讓知乎刪我的回覆!


續上面吐槽之二:http://rango.swoole.com/archives/305

1、主線程ractor,首先swoole的源代碼我沒看,但是從這描述上看,是主線程接受請求,然後把fd傳給其它線程來處理read,write事件!既然是這樣,我想請問你哪裏解決了驚羣的問題?作者知道驚羣的定義嗎?拿個主線程來accept然後把fd轉走,這叫解決了驚羣?壓根就沒有驚羣這個場景,何來解決??驚羣是多個進程或者線程持有同一個fd,當fd可操作時部分進程或者線程會被喚醒!你這就主線程有listenfd的控制權,請問哪裏來的驚羣場景?這就好比你不用malloc然後說你解決了內存泄露,真是逗的一手好逼。

2、管理進程,這個更是操蛋了,身爲一個phper,經常改完需要運行看到結果,好嘛!這尼瑪寫完還要去reload一下,果然是“提升”了開發效率!

3、異步ractor,ractor線程閒的扣腳,worker進程忙的吞糞的情況下,你ractor線程把數據讀過來幹什麼?還尼瑪不受影響,處理都來不及,接受再多數據有什麼用??

4、同步和異步,這就更戲劇化了,我看作者是寫的一手好hello world,,一個龐大的系統裏面又是同步,又是異步!光是寫完估計就亂了,以後就別維護了!另外好像swoole除了能支持mysql和文件異步,其它能有用的異步到是一個沒見着。。還比node強太大!真要呵呵你個大呵呵了。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章