More  

收藏本站

電腦請使用 Ctrl + D 加入最愛
手機請使用 收藏
關閉

小編的世界 優質文選 主機

性能超群的HTTP服務器 搜狗C++服務器引擎發布


字體大小:
2020年9月03日 -
:   
 

快科技官方百家號

另一方面,對多通信計算資源融為一體的解決方案,進一步提升了Workflow引擎的性能。過去開發者在面臨選擇高吞吐網絡框架時,需要自己面對不同計算資源比例而劃分不同大小的線程池。然而每種計算具體資源需求比例是動態變化的,重要性也不一樣,後端響應時長也是動態變動。如今在workflow的加持下,C++服務器引擎也能像Go語言一樣,實現網絡資源異步調度,並且進一步打通計算,磁盤等資源。

引入任務流概念,是搜狗Workflow引擎的另一亮點。Workflow將資源高度封裝,用戶再也接觸不到連接池、線程池、包括想要做aio時的文件fd與各種異步通知機制。這就意味著,在開發階段開發人員僅僅需要了解業務關系而不用關心內部細節,幫助開發者們實現自己複雜的業務邏輯。

開發人員可以利用Workflow封裝好的各種任務來動態或靜態組建自己的業務邏輯,如下圖所示,不同類型的任務都可以被串行、並行到一起:

除了各種創新設計以外,workflow還擁有比其他C++框架更友好的用戶體驗。過去許多企業自己搭建的服務器平台,在設計之初並未考慮到對多平台、多協議的支持,導致當新需求出現之時,開發者不得不通過自定義框架等方式來解決這個問題。Workflow原生實現了對http、redis、mysql和kafka等協議,可以直接作為這些協議的客戶端使用。並且在其基礎上開發了一套更加易用的Sogou RPC,實現與brpc和thrift互通,IDL支持protobuf和thrift,並且可以通過http+json或IDL實現跨語言,Sogou RPC項目也會在不久的將來開源。

Http Server性能實測:Sogou C++Workflow VS nginx、brpc

為了充分的體現出Workflow在性能上的優勢,搜狗也提供了Workflow和nginx、brpc兩個比較主流知名的系統一起做的http server性能對比,

測試環境:

這裏選取了最基本的測試場景:wrk或者wrk2跨機做client,單server,長連接,CPU:40核 E5-2630 v4 @ 2.20GHz,內存:192GB,網卡:25000Mb/s。nginx配置了auto的進程數(與核數一致),brpc配置了40個nthreads,workflow配置了16個poller線程和20個handler線程。

測試一:不同並發數對QPS的影響(越高越好)

結論:隨著壓測並發數的增加,server的QPS會隨著增高。可以看到Workflow無論是低並發數還是高並發數的情況下,QPS依然比nginx和brpc要高,尤其是並發數超過128的時候優勢更加明顯,Workfow對於小包基本能保證50w的QPS,說明內部對網絡資源的高並發調度做了很多優化。

測試二:不同數據大小對QPS的影響(越高越好)

結論:此處的返回包大小是http請求的body大小,隨著返回包增大,QPS會有所下降,我們希望QPS依然盡可能保持平穩不要下降得太快。Workflow在同並發下的性能依然比其他兩個系統要好,說明網絡收發和其他調用之間的調度協調得更好。

測試三:固定QPS下的延遲分布CDF圖(越左越好,越直越好)

結論:本測試由wrk2進行固定QPS的壓測,其中還有1%的長尾請求Outiler,長尾請求不計入結果,因為我們關注的是模擬真實情況下普通請求能否被及時處理。由於nginx在其他測試中性能略差一截,因此沒有對其進行CDF對比。可以看到在不同比例的分布中,Workflow的延遲更低、且最慢的那些(0.99到1.00之間)延遲增長也相對緩慢,說明Workflow對長尾處理更及時。

通過對比,可以發現Workflow的確在核心性能上有著自己獨到的優勢,對於很多開發者來說,往後也就多了一種選擇,遇到合適的應用場景,Workflow無疑會幫助開發者大大提升開發效率,確保項目成功。

開源核心技術,讓搜狗走向開發者生態的前沿

開源如此“硬核”的服務器引擎並不常見。許多科技公司都在花費極大精力對自己的產品、技術進行保密,核心算法更是秘而不宣。而近年來,搜狗卻走了一條與大眾相反的道路。不僅是Workflow,之前搜狗還相繼開源了機器閱讀理解工具SMRC、內部項目管理系統Cynthia在內的多項核心技術和工具。事實上,搜狗正是通過的不斷對核心技術的開源,遵守並理解開源社區文化,才能推動企業本身的技術進步,吸納更多優秀的開發者投入其中,為相關產品的後續發展持續輸送技術養料和創造力。

想要在日趨激烈的互聯網市場中獲得話語權,就必須積極的制定標准,始終站在開發者生態的前沿,建立可持續的競爭優勢,讓產品被更多用戶喜愛並使用。未來,在開源的道路上,搜狗還會不斷將相關先進技術持續對外開放,發揮自身領域的專業能力與力量,推動開源運動的進一步普及。