NGINX作者新開源軟體NGINX Unit

Unit是NGINX作者Igor Sysoev親自設計,NGINX團隊核心人員開發的,首次開源發佈於2017年。

Unit,已經出道好幾年

Unit是NGINX作者Igor Sysoev親自設計,NGINX團隊核心人員開發的,首次開源發佈於2017年。 有著活躍的社區和專業的開發能力,我有幸成為其中正式一員。

Unit 現代應用伺服器軟體

結合此圖看Unit,以下是它的核心功能。
配置:完全動態,包括進程數、服務監聽埠、證書等。
路由:靈活並且強大的路由功能,它會成為微服務的殺器功能。
語言:支持各種主流語言和版本,這對DevOps太友好了。
文件:支持靜態資源服務,並且更好用。
代理:目前只有簡單的輪循,成為完整的負載均衡只是時間問題。
容器:目前擁有隔離功能,一直在挑戰做容器的事情。

NGINX,全球頭號Web伺服器軟體

2004年Igor Sysoev開源了NGINX,本來只是個人的興趣而已,沒想到2021年NGINX正式超越Apache,成為全球頭號Web伺服器軟體,並且這個趨勢看著會一直持續下去。

20年前的電腦體系架構跟現在相比已經發生非常大的變化,NGINX從最早版本到現在最核心的代碼幾乎沒有變過。 客觀講NGINX的架構已經非常優秀了,也說明年輕時的Igor已經具備非常強的設計和編碼能力。

然而深諳NGINX源碼的開發者仔細思考的話,會發現NGINX最大的問題就是動態能力不夠。 比如reload需要創建新的進程,這對長連接服務是沒法忍受的,當然通過其它方式已經有成熟的解決方案。 比如不能修改頭部等,也可通過其它方式解決。 這些的本質還是架構和數據結構設計的問題,放在10多年前這些都不是問題,互聯網沒有今天這麼複雜。

得益於NGINX的模組化,NGINX的生態發展如此迅速,反過來看也正是因為模組化,限制了NGINX的重構機會,因為第三方模組依賴了NGINX的API。 這也是Igor多年來一直在思考解決的問題。  NGINX Unit就這樣出現了。


Unit,更好的架構設計

Unit跟NGINX是兩個完全獨立的軟體,沒有人比NGINX團隊更清楚哪些設計更需要改進。  Unit內部引入了level hash,動態記憶體池,動態共用記憶體等。 得益於這些基礎數據結構,Unit解決了動態的問題,徹底放飛了。

架構圖

Unit高性能

NGINX團隊最拿手的就是開發高性能軟體,Unit的低延遲非常優秀,讓它可以處理更多的請求。 還有不得不提它的低記憶體消耗。


純應用

NGINX+套用

單位

黃色部分:讀取時間綠色部分:處理時間橙色部分:回應時間

Unit穩定嗎? 穩定

NGINX社區的風格就是開發出來的東西都是產品級別的,雖然目前Unit功能相對較少,但發佈出來的都是穩定可用的。


Unit簡單好用

以wordpress為例,只需一個Unit軟體就行。 以下是它的配置。


Unit未來可期

Unit背後有強大的研發團隊,它是NGINX作者親自設計,NGINX核心團隊開發的,相信Unit未來大有可為。



官方資料

文檔:http://unit.nginx.org

代碼:https://github.com/nginx/unit

代碼:https://github.com/orgs/nginx/projects/1

原文作者:洪志道