在開源這片自由的土地上,孕育了太多開源 Web 架構。我在 GitHub 上搜了一下“web framework”關鍵字顯示有 56000+ 比對的開源項目,它們百花齊放各有特色,覆寫多種語言。
相信做過 Web 開發的程式員,都能說出好幾個 Web 架構,如數家珍般地說出它們的好。比如我用過的 Python Web 架構有:Django、Tornado、Flask、FastAPI。這些 Web 架構各有特色:
Django 的大而全
Flask 的微小上手快
專門開發接口的 FastAPI
不同的 Web 架構,在應對不同場景和需求時各有千秋,是以很難片面的說那個 Web 架構就是最好的,但如果單從速度方面比較的話,還是可以比出個高低的! 今天介紹的開源項目,就試圖找出最快的開源 Web 架構。
項目位址:https://github.com/the-benchmarker/web-frameworks
web-frameworks 定時釋出多種開源 Web 架構性能測試報告的項目,告訴你誰是最快的 Web 架構!
它采用 Ruby 語言編寫,首先通過 Docker 啟動待壓測的 Web 架構,啟動後通過 wrk 壓測服務,最後把測試報告釋出到網站上,結果支援搜尋和排序功能,整個過程完全自動化。
具體的測試參數和機器配置:
wrk:HTTP 基準測試工具,支援壓測和輸出測試報告。
wrk 的相關參數:8 線程(-t),壓 15 秒(-d),分别采用并發(-c) 64、256、512 模式壓測了三次。我在本機用 wrk 對掘金網站做了壓測,用來講解報告的相關資料。
指令:wrk -t8 -d15s -c64 --latency
結果及名詞解釋:
機器配置:
CPU: 8 Cores (AMD FX-8320E Eight-Core Processor)
RAM: 16 GB
OS: Linux
項目中涉及的所有測試,用的都是相同配置的機器,相關的所有代碼均已開源。盡可能公平公正,完全透明。測試結果還會随着 Web 架構的版本疊代而更新,
下面來看看 web-frameworks 最新一期的測試報告。
web-frameworks 測出來的平均延遲,從低到高排序:
Star 數:2.9k|語言:Rust
https://github.com/nickel-org/nickel.rs
一個受 Express.js 啟發的 Rust Web 架構。示例代碼:
Star 數:5.9k|語言:Rust
https://github.com/iron/iron
示例代碼:
由于篇幅問題,這裡僅介紹報告中前 2 名的架構。
web-frameworks 測出來的平均每秒處理請求數,從高到低排序:
Star 數:286|語言:Java
https://github.com/activej/activej
适用于 Web、高負載和微服務的 Java 架構。示例代碼:
Star 數:239|語言:Nim
https://github.com/dom96/httpbeast
本文内容有限無法展示所有的名額,點選這裡檢視更多名額和分類的報告。
看完這份 Web 架構測試報告,我發現 Rust 寫的 Web 架構在不同的性能名額的測試結果中都名列前茅,看來 Rust 在性能方面真的是名不虛傳。
當然性能不是評判一個 Web 架構的唯一标準,今天寫這個項目也是希望可以給大家在選擇 Web 的時候提供一個參考。而且報告中有冷門但具有特點的 Web 架構,可作為玩具項目玩一玩,如果哪天突然火起來的時候,你可能已經搶占先機、輕車熟路了。
最後,web-frameworks 的測試結果共包含 237 個 Web 架構,雖然不多但是這個數字還在不斷增加...而且 issues 裡還有很多 Web 架構申請“出戰”,開源社群的力量正在讓這個項目越來越好,看到這裡我就放心了。
以上就是本文的全部内容,希望通過這個開源項目可以讓你找到最快、最能扛的 Web 架構,性能上快人一步!
關注 HelloGitHub 公衆号 第一時間收到更新。
還有更多開源項目的介紹和寶藏項目等待你的發現。
作者:削微寒