產生背景
-
互聯網的數據量快速增加html
-
摩爾定律性能提高nginx
- 摩爾定律的失效:以前服務跑在1G赫茲,當一年半之後,更新到2G赫茲的CPU時能夠預測到性能有兩倍的性能提高。可是到了本世紀處,摩爾定律在單顆cpu的頻率上已經失效了,cpu開始向着多核方向發展。 這個時候,服務是跑在8核CPU上時,一年半之後,換到了16核CPU,服務的性能一般是不會有成倍的提高的。那麼這些性能到底是損耗在哪裏呢?主要是操做系統和大量的軟件沒有作好服務於多核架構的準備。
-
低效的Apacheweb
- 一個進程只能服務於一個連接:Apache的架構模型一個進程同一時間只會處理一個連接一個請求,處理完之後纔會處理下一個請求。這有什麼潛臺詞呢?它實際上在使用操做系統的進程間切換的特性,由於操做系統微觀上只有有限的CPU,可是操做系統被設計爲同時服務數百甚至上千的進程,而Apache一個進程只能服務於一個連接,這樣的模式會致使當Apache須要面對幾十萬、幾百萬連接的時候,它沒有辦法去開幾十萬、幾百萬的進程;而進程間切換的代價成本又過高了,當併發的鏈接數越多,這種無謂的進程間切換引起的性能消耗也就越大,而Nginx是專門爲了這樣的應用場景而生的。Nginx能夠處理數百萬甚至上千萬的併發連接。
Nginx是什麼?
-
輕量級、佔有內存少、併發能力強緩存
- nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,並在一個BSD-like 協議下發行。由俄羅斯的程序設計師Igor Sysoev所開發,供俄國大型的入口網站及搜索引擎Rambler(俄文:Рамблер)使用。
- 其特色是佔有內存少,併發能力強,事實上nginx的併發能力確實在同類型的網頁服務器中表現較好.中國大陸使用nginx網站用戶有:新浪、網易、 騰訊等。
-
高性能的 Web 和反向代理服務器安全
- 做爲 Web 服務器:相比 Apache,Nginx 使用更少的資源,支持更多的併發鏈接,體現更高的效率,這點使 Nginx 尤爲受到虛擬主機提供商的歡迎。可以支持高達 50,000 個併發鏈接數的響應,感謝 Nginx 爲咱們選擇了 epoll and kqueue 做爲開發模型.
- 做爲負載均衡服務器:Nginx 既能夠在內部直接支持 Rails 和 PHP,也能夠支持做爲 HTTP代理服務器 對外進行服務。Nginx 用 C 編寫, 不管是系統資源開銷仍是 CPU 使用效率都比 Perlbal 要好的多。
- 做爲郵件代理服務器: Nginx 同時也是一個很是優秀的郵件代理服務器(最先開發這個產品的目的之一也是做爲郵件代理服務器),Last.fm 描述了成功而且美妙的使用經驗。
Nginx 安裝很是的簡單,配置文件 很是簡潔(還可以支持perl語法),Bugs很是少的服務器: Nginx 啓動特別容易,而且幾乎能夠作到7*24不間斷運行,即便運行數個月也不須要從新啓動。你還可以在 不間斷服務的狀況下進行軟件版本的升級。服務器
Nginx通常用戶七層負載均衡,其吞吐量有必定的限制。爲了提升總體的吞吐量,會在DNS和Nginx之間引入LVS(軟件負載均衡器)、F5(硬負載均衡器) 能夠作四層負載均衡,首先DNS解析到LVS(F5),讓後LVS(F5)轉發給Nginx,在有Nginx轉發給真實的服務器架構
Nginx的優勢?
-
高併發、高性能併發
- 只要咱們對每一個連接使用的內存足夠少就能實現高併發;既要達到高併發又要達到高性能,每每須要很好的設計。
- 好比如今的主流雲服務器,nginx 在32核64G的配置中能夠輕鬆達到數千萬的併發連接;若是是處理簡單的靜態資源請求,nginx 能夠達到100w 的 rps 。
-
可擴展性好負載均衡
- 可擴展性主要體如今模塊化設計;模塊化設計很是穩定,使得 Nginx 的生態圈、第三方模塊很是豐富。甚至於有 Tengine、OpenResty 這樣的第三方插件在他的基礎之上又生成了新的生態圈。豐富的生態圈和第三方模塊爲 Nginx 的豐富功能提供了保證。
-
高可靠性模塊化
- 高可靠性指的是 Nginx 能夠服務器上持續不間斷的運行數年,而不少web服務器每每運行幾周or幾個月,就須要進行一次重啓。對於 Nginx 這樣一個高併發、高性能的反向代理服務器而言,每每運行在企業內網的邊緣節點上,這個時候若是咱們企業想提供4個九、5個九、甚至更高的高可用性時,對於 Nginx 持續運行可以宕機的時間一年可能只能以秒來計,因此在這樣一個角色中,Nginx 的高可靠性給咱們提供了很是好的保證。
-
熱部署
- 熱部署是指在不中止服務的狀況下升級Nginx。這個功能對於 Nginx 來講很是重要,由於在服務器上跑了數百萬的併發連接,若是是普通的服務器,咱們只能 kill 掉進程再重啓的方式進行升級操做。可是對於 Nginx 而言,由於直接 kill 掉 nginx 進程會給全部的已經創建連接的客戶端一個很很差的體驗。
- BSD許可證
- BSD許可證是指 Nginx 不僅是開源的、免費的,並且咱們能夠在有定製需求的場景下,去修改 Nginx 的源碼,再運行在咱們的商業場景下且屬於合法的。
Nginx應用場景
- http服務器
- Nginx是一個http服務能夠獨立提供http服務。能夠作網頁靜態服務器。
- 反向代理、負載均衡、緩存
- 當網站的訪問量達到必定程度後,單臺服務器不能知足用戶的請求時,須要用多臺服務器集羣可使用nginx作反向代理。而且多臺服務器能夠平均分擔負載,不會應爲某臺服務器負載高宕機而某臺服務器閒置的狀況。
- 配置安全管理
- 好比可使用Nginx搭建API接口網關,對每一個接口服務進行攔截。
學習文檔:點擊進入