搜狗開源輕量級C++服務器引擎

9月3日,搜狗公司正式宣佈開源C++服務器引擎——Sogou C++Workflow。
目前Workflow支撐着搜狗幾乎所有後端C++在線服務包括所有搜索服務,雲輸入法,在線廣告等,每日處理數百億請求,引擎一經發布就在 GitHub 上引起衆多開發者關注。這款引擎不僅實現了高性能、輕量級的落地,還創新性的引入任務流概念,實現了計算任務與通信任務的統一和協同調度。基於Workflow引擎,開發者可以方便的實現複雜的業務邏輯,並進一步滿足對高併發、高性能C++服務器程序的開發需求。

Sogou C++Workflow 地址:https://github.com/sogou/workflow

輕量級、高性能, Sogou C++ Workflow助力企業降本增效

Workflow在設計之初,就秉持着高性能與輕量級兩個核心理念。長久以來,業界中優化服務器性能都主要專注於如何跑滿cpu、如何單獨地讓網絡請求極速響應等方面。而此次上線搜狗Workflow則更專注於如何讓各種網絡資源被具體的調度器管理,使其儘可能地全部調度起來。

另一方面,對多通信計算資源融爲一體的解決方案,進一步提升了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的確在覈心性能上有着自己獨到的優勢,對於很多開發者來說,往後也就多了一種選擇。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章