在這裏,NGINX 創始人 Igor Sysoev 將親述 NGINX 的誕生史

2020 年 5 月 20 日,一場 NGINX 在國內的盛會、一個所有 NGINX 用戶 & 愛好者朝聖的最佳場所,F5 線上技術峯會 – NGINX 專場將以線上直播的形式面向所有開發者召開。屆時各位 NGINX 開發者心目中的偶像 NGINX 創始人 Igor Sysoev 以及國內 NGINX 技術專家陶輝老師將空降大會現場,從 NGXIN 創始人的成長經歷出發,幫助每一位開發者來重新理解 NGINX 的前世今生。  

如果想讓產品在支持高併發請求的同時保持高效的服務,NGINX 可能是最好的選擇。

這並非一句玩笑話,而是經過全球技術人多年來技術實踐後所得出的結論。NGINX 就像一個萬能藥,在任何存在性能需求的場合都能找到它的身影,它可以在百萬併發鏈接中實現高吞吐量的 Web 服務。然而即便是這樣,NGINX 卻至今缺少一個能夠將所有 NGINX 用戶聚集起來的官方場所,這對於像這樣一個如此受歡迎的開源產品來說是很不常見的,而這也是此次大會之下的重頭戲之一。

NGINX 現在已經成爲了衆多企業後臺架構的核心,許多企業都將 NGINX 用作承擔所有來自 Web 服務的業務流量負載,也將其用作全球數百萬臺服務  器上的反向代理,能夠支撐業務數以百萬級別的高併發。這樣一款自由的、開源的、高性能的 HTTP 服務器和反向代理軟件,在企業“數字化轉型概念”大行其道的今天,NGINX 能力給企業的後臺架構帶來了極大的穩定性,更是成爲企業實現數字轉型的必備利器。

1對於企業來說,NGINX 是實現數字轉型的有效途徑

NGINX 是實現技術突破的必要工具。

隨着 2020 年的魔幻開局,國內衆多行業都受到了不小的衝擊,疫情期間人人自危,企業復工困難,上下游供應鏈有一端沒有恢復就不能真的恢復業務;像疫情這種黑天鵝事件是完全不可預測的。對於企業而言現在正處於一個模糊的、不確定的、快速變化的時代,在這種 VUCA 時代特徵下出現這種狀況可以說既是意外又不是意外。對於企業的影響一方面取決於該行業的特點,另外一方面企業所做出反應狀況的不同也會形成不一樣的結果。

隨之而來的就是許多線下業務被迫轉移線上,然而看起來只是一場非常簡單的業務遷移,但在後臺架構看來,卻是一場對企業自身、以及企業後臺面對流量、併發與架構穩定性的挑戰。

首先是業務場景的變換。從線下切換至線上,不只是業務呈現形式的變更,其更涉及到企業內部更深處的平臺建設、流程規劃、人員培訓等一系列內容。

其次是現有的技術能力難以支撐。隨着線下業務的大量取消,越來越多的用戶開始涌入線上平臺,這對企業的後端架構能力提出了更高的要求,要在能夠穩定承受流量高併發的同時還能兼顧後臺性能的穩定性。然而這對衆多專注在線下業務的企業來說,要在短時間內把線上平臺打造爲這樣一款高性能的平臺,的確有點難爲他們。

這也顯示出當下的一個痛點,場景的突然轉變驅使着企業去選擇具備更加高性能、更加高效的處理平臺,而對於企業的現實情況來說,線上的高並發表示其急需平臺下的高性能 web 服務。

而這,恰好是 NGINX 的長處。爲什麼這麼說?因爲相較於傳統 ADC,NGINX 具有以下幾點優勢:

1、採用事件驅動的異步框架

基於異步及非阻塞的事件驅動模型,可以說是 NGINX 得以獲得高併發、高性能的關鍵因素。因爲一個 HTTP/HTTPS 請求包括多個階段,每一個階段在什麼時候發生是不確定的,這就造成了異步性。每一個階段的發生都會觸發事件驅動框架,然後交由事件消費者處理,也就是說一個事件消費者僅僅是處理了一個請求中的一小部分。NGINX 採用事件驅動的設計來減少進程休眠的機率,從而實現提高網絡性能、減少請求延時以及支撐高併發的能力。

2、反向代理

有正向代理自然就存在反向代理。正向代理是指以請求端也就是客戶端的角度爲正向,用戶發出請求經過的代理,稱爲“正向代理”。反向代理則恰恰相反,是由代理選擇服務端節點。存在即合理,反向代理的存在也表明其擁有着不可替代優勢:

  • 首先能夠通過隱藏服務節點的 IP 來保護服務安全,此外也可以通過將服務節點置於防火牆之後來確保業務節點服務器不會被直接攻擊到。
  • 其次反向代理可以讓服務節點更加專注於業務,一些 HTTPS、壓縮等於業務無關的能力可以交由反向代理服務器去實現,從而避免浪費業務服務節點處理請求的能力。
  • 最後反向代理服務器能夠提供額外的緩存機制,將一些短時間內不會變化的動態內容儲存在緩存中,降低業務服務器的請求量;

正是由於 NGINX 引入了反向代理的特性,讓請求和響應都要經過 NGINX,因此也給 NGINX 帶來了諸如負載均衡、HTTP 緩存等能力。

3、負載均衡

“準備超越當前 ADC 的功能了嗎?”這是在 NGINX 官網負載均衡功能介紹頁面非常醒目的一句話,這無疑顯示了 NGINX 在這方面的雄厚實力與決心。負載均衡就是將請求“均衡”地分配到多臺業務節點服務器上。這裏的“均衡”是依據實際場景和業務需要而定的。對於 NGINX 來說,請求到達 NGINX,NGINX 作爲反向代理服務器,有絕對的決策權,可以按照規則將請求分配給它知道的節點中的一個,通過這種分配,使得所有節點需要處理的請求量處於相對平均的狀態,從而實現負載均衡。

4、HTTP 緩存

瀏覽器緩存是前端開發中經常遇到的問題,它是提升性能同時減少服務器壓力的有效手段之一。NGINX 可以作爲靜態頁面的 web 服務器,同時還支持 CGI 協議的動態語言,比如 perl、PHP 等。

而綜合上述總結的幾點 NGINX 優勢,NGINX 無疑是最合適的那個打造高性能平臺的工具。然而雖然它很火,但往往流行程度和開發者的掌握程度是不相等的。尤其是在衆多業務轉型線上,越來越多的企業認識到 NGINX 對於業務支撐的重要性,作爲開發者,掌握 NGINX 開發能力似乎已經成爲了“必修課”。

然而開發者在應用 NGINX 的過程中往往會遇到各種問題,國內 NGINX 技術專家陶輝曾經總結過,大多數人使用 NGINX 都停留在這幾個級別:

  • 第一種:使用 NGINX 配置最簡單的反向代理服務或者靜態資源服務,當擴展功能時發現新增的指令 NGINX 不支持,但又不懂如何增加 NGINX 模塊,如何分析 access 日誌。
  • 第二種:可以根據源碼定製安裝 NGINX,對網上流傳的大衆配置做一些個性化的修改,但遇到修改 proxy_pass 後的 URL 上游服務不正常等問題時就束手無策,不清楚 NGINX 各個目錄的意義,也不清楚 NGINX 的進程結構。
  • 第三種:能夠順暢地使用 NGINX 的常用功能,但不清楚第三方模塊發生衝突時的解決方案、stale 過期緩存的用法、NGINX 諸多變量是如何被賦值的、聽說 if 指令是邪惡的卻不知道它的設計理念及正確用法等等。
  • 第四種:可以正確地使用 NGINX 的功能及第三方模塊,並按照網絡上常見的優化參數優化性能,但對如何系統化地優化性能沒有頭緒,對於 NGINX、Linux 提供的內存緩衝區、網絡類等諸多指令和參數的優化沒有頭緒。
  • 第五種:可以熟練使用 NGINX,但對各第三方功能模塊如何與 NGINX 結合使用以及對 NGINX 性能影響不太清楚,對 NGINX 源碼的理解沒有達到由點到面的程度。

但這還只是冰山一角,NGINX 技術所涵蓋的範圍之廣超出我們每一個人的想象。作爲一款全球最受歡迎的開源產品之一,NGINX 的一舉一動都受到了來自全球開發者的重點關注。

2NGINX 在中國又有大動作了

2020 年 5 月 20 日(星期三),F5 以線上峯會的形式召開 F5 Code to Customer 2020 代碼到用戶暨 F5 中國 20 週年紀念慶典。屆時,各位 NGINX 開發者心目中的偶像 NGINX 創始人 Igor Sysoev 以及國內 NGINX 技術專家陶輝老師將空降大會現場,從 NGXIN 創始人的成長經歷出發,幫助每一位開發者來重新理解 NGINX 的前世今生。

另外備受開發者關注的 NGXIN 開源社區也將在大會現場正式成立,至此,NGINX 開發者終於有一個官方的“家”。此外本次大會更設有 5 大技術專題論壇、30+ 技術內容深度解讀以及 100+ 解決方案,足以滿足你對數字轉型技術趨勢的渴望。掃描下圖二維碼或點擊閱讀原文鏈接即可免費報名!

掃/碼/報/名

3關於 NGINX 中國開源社區

NGINX 開源社區是 F5/NGINX 面向所有 NGINX 用戶的官方社區。我們秉持“開放,包容,溝通,貢獻“ (open,inclusive,connect,contribution) 之宗旨,與業界共建開放、包容、活躍的“NGINX 用戶之家“;秉承開源的精神,在社區治理上高度開放,爲所有 NGINX 的用戶,開發者和技術愛好者,提供一個方便學習、討論的場所。也期待您成爲此社區中活躍的一員,貢獻您的文章,博客,代碼,踊躍討論與回答問題,打造您個人品牌和影響力。

2019 年 3 月,雲計算和安全應用服務公司 F5 Networks Inc 宣佈收購 NGINX,NGINX 是應用交付領域的開源領導者。

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