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未來大有可為。
官方資料
代碼:https://github.com/nginx/unit
代碼:https://github.com/orgs/nginx/projects/1
原文作者:洪志道