浅谈nodejs与php设计构思层面上的差异
nodejs最近火的一塌糊涂,那為什么它可以成為千百程序員的新寵呢?
難道只是因為把js搬到了服務端?如果僅僅是這樣是遷移了一個運行環境和增加幾個模塊的話我想完全不可能會得到喜新厭舊的程序員的青睞
nodejs和php的差異主要是兩個方面:分工和運行機制
分工:nodejs直接跳過了服務器這個階段,把創建服務器作為node的一個模塊,監聽請求這些應該是服務器做的工作現在變成了node做,這樣就簡化的開發環境,而且更加容易控制監聽請求以及響應.也就是說node沒有一個web容器,沒有根目錄的概念。
運行機制:
php在處理并發的時候是通過多線程處理,這樣會導致硬件成本的增加,特別是一些頻繁I/0的項目,很多的線程被阻塞,cpu得不到充分的利用。
node:node的核心理念是單線程,通過事件和回調實現并發。既然是單線程,那硬件成本自然比較低。
那單線程怎么實現并發呢?我認為正是這種實現的方法讓大家耳目一新,所以才會讓node如此的火,
并發實現原理:比如一百個請求要做一百件事,當第一個請求執行到i/o的時候立馬掛起,不等待i/o成功,直接執行下一個事件,直到i/o完畢,這是觸發回調事件,回調事件的優先級會比普通事件的優先級高,就是這樣通過異步來實現單線程的并發處理。保證了線程永遠有事做,不會等待
缺點:這樣是提高了cup的利用率,但是無疑是把所有雞蛋放在一個籃子里面,如果有個事件導致線程蹦了,直接的后果就是導致線程上的所有任務事件都蹦了,還有如果是運算的阻塞是沒法并發的,所以這就局限了它只是適合做大量i/o的應用場景,不適合做大量計算的項目,例如股票這類型的。
node還有一個很大的特點就是路由功能,需要自己去配置,應為沒有服務器軟件,所以服務器軟件的所有功能都需要自己去寫,但是常用的功能在開源社區基本都已經有人寫好了,對于我這樣的喳喳來說簡直就是福音啊。
以上筆記單純代表個人觀點,有不同意見的歡迎打攪。
總結
以上是生活随笔為你收集整理的浅谈nodejs与php设计构思层面上的差异的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 希沃白板5使用方法
- 下一篇: 动态规划算法php,php算法学习之动态