小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Java or PHP? 談?wù)劯卟l(fā)網(wǎng)站的技術(shù)選型和架構(gòu)設(shè)計

 flyk0tcfb46p9f 2019-03-24

對于許多創(chuàng)業(yè)公司,要做網(wǎng)站和手機App, 到底選擇Java還是PHP,是個很糾結(jié)的事情.

作為一個有10多年經(jīng)驗的工程師,談?wù)剛€人看法.

開門見山,先說結(jié)論.

一 結(jié)論

  1. PHP,Java各有優(yōu)劣,不要把問題想的太重大了,不妨舉重若輕,任選一個都好.
  2. 主要看團隊成員熟悉哪個語言,哪個語言能快速出產(chǎn)品,并快速迭代更新.

二 詳細比較

PHP的優(yōu)點

  1. 簡單, 開發(fā)效率高,是Java兩倍以上,能快速出產(chǎn)品,并快速迭代更新.
  2. 優(yōu)化簡單,多數(shù)企業(yè)很容易獲取較好的性能

PHP的缺點

  1. 由于PHP-FPM IO 阻塞的特點,一個進程同時只能處理一個請求,像京東,小米這樣的搶購情況下,大并發(fā)處理能力較差.
  2. 現(xiàn)在大學(xué)生學(xué)php的人少,不好招人.

Java的優(yōu)點

  1. 由于Tomcat非阻塞的特點,一個線程可同時處理多個請求,大并發(fā)性能較好
  2. 大學(xué)生學(xué)Java的人多,好招人.

Java的缺點

  1. 配置復(fù)雜,開發(fā)效率較PHP低
  2. 很占內(nèi)存,性能優(yōu)化復(fù)雜,如果優(yōu)化不好,性能反而不及PHP

三 高并發(fā)網(wǎng)站的架構(gòu)設(shè)計

其實許多初創(chuàng)公司的訪問量,遠遠沒有達到PHP或是JAVA撐不住的地步.

這里假設(shè)公司面臨像小米或是12306這樣的大并發(fā)訪問.

大并發(fā)情況下,IO阻塞與非阻塞,性能差距是很大的.

查看一下Nginx, tomcat, php-fpm 的源碼,我們發(fā)現(xiàn),Nginx, tomcat使用的是非阻塞多路復(fù)用機制(對于linux, 底層就是epoll),一個線程可同時處理多個請求,而php-fpm是阻塞機制,一個進程同時只能處理一個請求.

(php-fpm 有個配置可以使用epoll,只適用于master管理進程,對應(yīng)worker進程還是阻塞的)

處理大并發(fā)的能力排名nginx第一,tomcat第二,php-fpm第三.

對于像12306這樣的大并發(fā)情況,無論tomcat還是php-fpm都是瓶頸.

只有在nginx上做文章.

順便說下對于底層的IO多路復(fù)用,FreeBSD 的kqueue 性能要優(yōu)于Linux 的epoll.

以Nginx為中心的大并發(fā)架構(gòu)

首先,Nginx負載均衡是必需的.這里主要講單臺服務(wù)器的架構(gòu)優(yōu)化設(shè)計.

我們想,如果java和php 成為瓶頸,能繞過這個瓶頸就好.

回答是肯定的.

我們可以通過nginx插件直接訪問redis緩存,或是rabbitmq消息隊列里,這就是OpenResty項目提供的功能

OpenResty 是一款基于 NGINX 和 LuaJIT 的 Web 平臺, 可以使用簡單的Lua語言訪問后端redis, rabbitmq,mysql 等服務(wù),充分利用Nginx的非阻塞大并發(fā)處理能力.

通過OpenResty,可直接在redis讀取緩存,而訂單這樣的操作,可以寫到rabbitmq消息隊列里.

這樣大并發(fā)都有nginx來處理,php 或是java 只是作為工具在后端更新下緩存和處理消息隊列,這樣java和php 成為不再成為瓶頸,這也是開篇時,我說選擇php 或是java不重要的原因.

如果我們使用JWT認證用戶,這個用戶檢查的工作也可由nginx來處理.

隨著公司規(guī)模的擴大,對于消息推送,需要同時大量TCP長連接的情況,這時候golang語言開始登場.

總結(jié)

對應(yīng)創(chuàng)業(yè)公司,初期消息推送可用第三方服務(wù),而對于以Nginx為中心的大并發(fā)架構(gòu)方案對應(yīng)很多初創(chuàng)公司也還用不到,真需要時,用戶規(guī)模已經(jīng)很大了.

所以說選擇Java和PHP 真的不是很關(guān)鍵的問題,關(guān)鍵的問題是團隊熟悉哪個語言.

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多