nginx為什么性能這么優越?
所謂沒有對比就沒有傷害!
在nginx橫空出世之前,Apache服務器一直占據web服務器的壟斷地位,所以就用對比的方式來解釋nginx那么強!
兩者性能差別的主要原因在于網絡IO模型選擇不同,apache使用了select,而nginx使用了epoll模型!
舉個例子:一個萬人村里面選村長,有兩種方式:
①,讓每個人在紙條上寫下自己的名字,然后前村長去收集紙條(一個線程去遍歷),然后得到村長推薦候選人的名單(需要處理的連接),這就相當于select模型,去輪詢每一個連接,并對需要進行處理的連接進行處理!
②,每個人都可以毛遂自薦(每個連接都有可能活躍),想要競選的在旁邊站成一排(事件觸發,放入隊列中),然后就在這幾個人中選擇(幾個待處理的任務),相當于只要對少量的事件進行處理!
一個是從上萬人中循環得到幾個進行處理,一個是幾個自己站出來直接處理,這種效率相差不是一般的大吧?
nginx是基于epoll模型開發的,而epoll是基于JAVA NIO的同步非阻塞開發,在高并發情況下能支持更多的連接!
nginx是事件驅動的,一個主進程跟多個工作進程組成的工作模式,主線程負責循環分配事件,多個工作線程負責事件的處理!
我們通常使用nginx做什么呢?
nginx作為高性能的http服務器和反向代理服務器,通常用做負載均衡組件,負責接受大量的連接然后基于一定的規則(輪詢,權重等)分發連接給不同的應用服務器進行處理!
而且負載均衡配置十分簡單,只需要在安裝好nginx之后,通過修改配置文件nginx.conf,將不同的連接分發到不同的服務器上(通過配置server),配置十分簡單!
一般來說,企業中使用nginx作為負載均衡組件的場景還是很多的,同時為了避免單點故障帶來的不穩定性,通常會使用keepalive搭建高可用的集群方案!
nginx搭建比較簡單,大家自己可以多玩一玩!更多的技術分享,敬請關注。。。