異數OS 織夢師-Xnign(四)-- 挑戰100倍速Nginx,腳踩F5硬體負載均衡
.
異數OS 織夢師-Xnign(四)– 挑戰100倍速Nginx,腳踩F5硬體負載均衡
本文來自異數OS社群
github: https://github.com/yds086/HereticOS
異數OS社群QQ群: 652455784
異數OS-織夢師(訊息中介軟體 ,遊戲開發方向)群: 476260389
異數OS-織夢師-Xnign(Nginx方向)群: 859548384
織夢師-Xnign 產品簡介
異數OS 織夢師-Xnign 使用異數OS技術設計實現解除7層應用IO效能約束,帶來http請求的10到100倍IO效能的提升,Xnign是Nginx的倒寫,定位與Nginx目標類似,可以做Http cache靜態頁面加速,cgi可做精準L7業務負載均衡,可做大型網站前端流量接入,定製業務層精確分載。
與眾不同的特性
- 簡單的框架,實現簡單,由於使用BIO方案,因此httpserver主框架程式碼僅30行,非常輕量級,複雜度僅有Nginx的萬分之一。
- 高效能 ,由於異數OS 的IO加速,http請求處理效能是Nginx效能的100倍(靜態頁面cache 以及空負載cgi),實測每核長連線最大250W QPS,短連線120W QPS,最大頻寬2.8GB/s(220WQPS),併發請求容量提升10倍,輕鬆實現300W活躍併發請求,理論推算可單路最大帶200G雙路400G網路流量。
- 方便定製 ,由於BIO以及RPC技術的簡單易用,因此非常方便客戶自行定製實現各類產品,技術難度降低很多。
- 精準業務層負載均衡方案, 通常的負載均衡方案可分為系統級負載均衡,比如F5 LVS,應用級負載均衡,比如Nginx,HAproxy,業務級負載均衡,比如訊息佇列,RPC等(rocketmq,dubbo),系統級負載均衡效能最高,但是負載均衡策略不夠精確,通常是採集負載機系統的壓力資訊,如CPU 記憶體磁碟網路等資源佔用來做負載均衡依據,但這類資訊不能提前預警應用壓力,通常發現時,目標負載系統已處於雪崩宕機的邊緣,藥石難救,因此受用面很窄,比如F5並不能為12306秒票業務做準確壓力均衡分載,應用級負載均衡則相對更加準確,其可以收集目標應用的請求阻塞延遲情況來判斷應用是否有過載可能,但其無法感知業務層負載,比如應用由於是分散式環境,其本身可能是空載,其CPU 以及IO都很空閒,但其業務請求佇列可能已滿載,後端資料庫卻在滿載執行,這時再提交請求給應用,應用雖然能及時響應請求,但請求實際上都進入佇列,這導致請求可能遠遠超時無法完成,因此業務級別的精確負載均衡成為更靠譜的需求,業務級負載均衡可以精準感知應用業務真實負載情況,根據真實業務負載壓力,但一般的業務層負載均衡效能較低併發請求容量不足,並不能提供給門戶站點入口使用,所以真正使用場合是在前面配合系統級負載均衡和應用級負載均衡構成三級負載均衡方案,這樣就使得集群系統變的複雜並運維成本高昂,Xnign則通過高效能RPC技術以及訊息佇列技術為業務級負載均衡帶來比系統級負載均衡高10倍的效能(F5 L7 CPS),因此大大降低負載均衡方案的運維成本和設計成本。
織夢師-Xnign 方案說明
1.HttpCreater 分散式環境中通過HttpCache提供的Rpc介面管理HttpCache,可以增刪Xnign中HttpCache的靜態頁面.
2.HttpCache目前是一個靜態頁面的記憶體中的 HashMap。
3.HttpServer接收HttpClient的http請求,靜態請求查詢HttpCache並返回響應,cgi請求目前測試是個Echo,返回請求的cgi引數,未來會定製推送給業務的空閒Rpc執行緒,或者接入織夢師水母方案,以此實現精準的業務級負載均衡方案。
4. Rpc Manager為APP應用伺服器提供RPC註冊服務,APP應用伺服器啟動後在Rpc Manager註冊關注的業務Topic,實現業務訂閱,Rpc Manager為APP應用建立Rpc推送服務。
織夢師-Xnign測試成績
測試專案分為靜態頁面的短連線效能測試,長連線效能測試,海量併發連結效能測試,理論每核最大頻寬效能測試,cgi echo效能測試,測試環境都是單核2670v1 82599雙口10G光纖 DPDK環境,HttpCache頁面數量初始化為100W,請求池隨機生成128K條,由於網絡卡條件約束,因此理論最大頻寬測試使用異數OS軟體交換機完成。
長連線128 Http請求執行緒400位元組頁面
長連線300W Http請求執行緒400位元組頁面
短連線128 Http請求執行緒400位元組頁面
短連線300W Http請求執行緒400位元組頁面
長連線128 Http請求執行緒1300位元組頁面理論頻寬測試
2.8GB/s,理論單核可帶滿25G網絡卡,單節點預計帶滿200G,雙節點400G。
長連線128 Http CGI請求執行緒Echo測試
相關效能對比
織夢師-Xingn 各項測試
測試特性 | 長連線128連結 | 長連線300W連結 | 短連線128併發執行緒請求 | 短連線300W併發執行緒請求 | 128執行緒長連線Cgi Echo |
---|---|---|---|---|---|
IOPS | 2.5M | 2.1M | 1.2M | 470K | 2.0M |
平均延遲 | 呼叫效能/連結數量 | 呼叫效能/連結數量 | 呼叫效能/連結數量 | 呼叫效能/連結數量 | 呼叫效能/連結數量 |
最小延遲 | 10us | 10us | 10us | 10us | 10us |
相關產品對比測試
資料來自網路,環境目標不同,選取目標產品最大效能值,成績僅供參考。
引用的其他產品測試成績
Nginx F-stack
https://github.com/F-Stack/f-stack
seastar 成績引用
https://github.com/scylladb/seastar/wiki/HTTPD-benchmark
測試特性 | 織夢師-Xingn長連線 | 織夢師-Xingn短連線 | Seastar Httpd長連線 | F-stack Nginx短連線 (CPS) | F-stack Nginx長連線(RPS) | taomcat nio http | F5 VPR-LTM-C2400-AC(L7 CPS) |
---|---|---|---|---|---|---|---|
IOPS | 2.5M | 1.2M | 32W | 7W | 25W | 3000 | 100W(4核) |
平均延遲 | 呼叫效能/連結數量 | 呼叫效能/連結數量 | 呼叫效能/連結數量 | 呼叫效能/連結數量 | 呼叫效能/連結數量 | 呼叫效能/連結數量 | |
最小延遲 | 10us | 10us | 1-10ms | 1-10ms | 1-10ms | 1-10ms |
其他
通過上面對比測試,相對Nginx,織夢師-Xnign可加速Http請求100倍,併發請求效能提高10倍以上,HttpCache算是可以獨立落地的產品了,有需要對靜態頁面加速的同學可以聯絡購買,需要L7業務級負載均衡定製的可加社群諮詢合作開發。