溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C++服務(wù)器引擎引入任務(wù)流的概念是什么

發(fā)布時(shí)間:2021-11-24 11:08:38 來源:億速云 閱讀:227 作者:iii 欄目:互聯(lián)網(wǎng)科技

本篇內(nèi)容主要講解“C++服務(wù)器引擎引入任務(wù)流的概念是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“C++服務(wù)器引擎引入任務(wù)流的概念是什么”吧!

搜狗公司開源了其 C++ 服務(wù)器引擎 Sogou C++  Workflow,這一引擎實(shí)現(xiàn)了高性能、輕量級(jí)落地,還引入任務(wù)流概念,實(shí)現(xiàn)了計(jì)算任務(wù)與通信任務(wù)的統(tǒng)一和協(xié)同調(diào)度。

C++服務(wù)器引擎引入任務(wù)流的概念是什么

據(jù)介紹,目前該引擎支撐著搜狗幾乎所有后端 C++ 在線服務(wù),包括所有搜索服務(wù)、云輸入法與在線廣告等,每日處理數(shù)百億請(qǐng)求。

Sogou C++ Workflow 在設(shè)計(jì)之初,就秉持著高性能與輕量級(jí)兩個(gè)核心理念。長(zhǎng)久以來,業(yè)界中優(yōu)化服務(wù)器性能都主要專注于如何跑滿  cpu、如何單獨(dú)地讓網(wǎng)絡(luò)請(qǐng)求極速響應(yīng)等方面。而此次上線的搜狗 Workflow  則更專注于如何讓各種網(wǎng)絡(luò)資源被具體的調(diào)度器管理,使其盡可能地全部調(diào)度起來。

C++服務(wù)器引擎引入任務(wù)流的概念是什么

另一方面,對(duì)多通信計(jì)算資源融為一體的解決方案,進(jìn)一步提升了 Workflow  引擎的性能。過去開發(fā)者在面臨選擇高吞吐網(wǎng)絡(luò)框架時(shí),需要自己面對(duì)不同計(jì)算資源比例而劃分不同大小的線程池。然而每種計(jì)算具體資源需求比例是動(dòng)態(tài)變化的,重要性也不一樣,后端響應(yīng)時(shí)長(zhǎng)也是動(dòng)態(tài)變動(dòng)。Sogou  C++ Workflow 使得 C++ 服務(wù)器引擎也能像 Go 語言一樣,實(shí)現(xiàn)網(wǎng)絡(luò)資源異步調(diào)度,并且進(jìn)一步打通計(jì)算與磁盤等資源。

C++服務(wù)器引擎引入任務(wù)流的概念是什么

此項(xiàng)目最大的亮點(diǎn)可能是創(chuàng)新性引入了任務(wù)流的概念,Sogou C++ Workflow 將資源高度封裝,用戶再也接觸不到連接池、線程池,包括想要做 aio  時(shí)的文件 fd 與各種異步通知機(jī)制。這就意味著,在開發(fā)階段開發(fā)人員僅僅需要了解業(yè)務(wù)關(guān)系而不用關(guān)心內(nèi)部細(xì)節(jié),幫助開發(fā)者們實(shí)現(xiàn)自己復(fù)雜的業(yè)務(wù)邏輯。

開發(fā)人員可以利用 Sogou C++ Workflow  封裝好的各種任務(wù)來動(dòng)態(tài)或靜態(tài)組建自己的業(yè)務(wù)邏輯,如下圖所示,不同類型的任務(wù)都可以被串行、并行到一起:

C++服務(wù)器引擎引入任務(wù)流的概念是什么

根據(jù)資料,除了各種創(chuàng)新設(shè)計(jì)以外,Sogou C++ Workflow 還擁有友好的用戶體驗(yàn)。Sogou C++ Workflow  原生實(shí)現(xiàn)了對(duì)http、redismysql 和 kafka 等協(xié)議的支持,可以直接作為這些協(xié)議的客戶端使用。并且在其基礎(chǔ)上開發(fā)了一套更加易用的 Sogou  RPC,實(shí)現(xiàn)了與 brpc 和 thrift 互通,并且可以通過 http+json 或 IDL 實(shí)現(xiàn)跨語言。

開發(fā)團(tuán)隊(duì)透露,Sogou RPC 項(xiàng)目也會(huì)在不久的將來開源。

Http Server 性能實(shí)測(cè):Sogou C++ Workflow VS nginx、brpc

搜狗團(tuán)隊(duì)也提供了 Sogou C++ Workflow 和 nginx、brpc 兩個(gè)主流系統(tǒng)的 http server 性能對(duì)比。

測(cè)試環(huán)境:

  • 選取了最基本的測(cè)試場(chǎng)景:wrk 或者 wrk2 跨機(jī)做 client,單 server,長(zhǎng)連接,CPU:40 核 E5-2630 v4 @  2.20GHz,內(nèi)存:192GB,網(wǎng)卡:25000Mb/s。nginx 配置了 auto 的進(jìn)程數(shù)(與核數(shù)一致),brpc 配置了 40 個(gè)  nthreads,workflow 配置了 16 個(gè) poller 線程和 20 個(gè) handler 線程。

測(cè)試一:不同并發(fā)數(shù)對(duì) QPS 的影響(越高越好)

C++服務(wù)器引擎引入任務(wù)流的概念是什么

結(jié)論:隨著壓測(cè)并發(fā)數(shù)的增加,server 的 QPS 會(huì)隨著增高。可以看到 Workflow 無論是低并發(fā)數(shù)還是高并發(fā)數(shù)的情況下,QPS 依然比  nginx 和 brpc 要高,尤其是并發(fā)數(shù)超過 128 的時(shí)候優(yōu)勢(shì)更加明顯,Workfow 對(duì)于小包基本能保證 50w 的  QPS,說明內(nèi)部對(duì)網(wǎng)絡(luò)資源的高并發(fā)調(diào)度做了很多優(yōu)化。

測(cè)試二:不同數(shù)據(jù)大小對(duì) QPS 的影響(越高越好)

C++服務(wù)器引擎引入任務(wù)流的概念是什么

結(jié)論:此處的返回包大小是 http 請(qǐng)求的 body 大小,隨著返回包增大,QPS 會(huì)有所下降,我們希望 QPS  依然盡可能保持平穩(wěn)不要下降得太快。Workflow 在同并發(fā)下的性能依然比其他兩個(gè)系統(tǒng)要好,說明網(wǎng)絡(luò)收發(fā)和其他調(diào)用之間的調(diào)度協(xié)調(diào)得更好。

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

C++服務(wù)器引擎引入任務(wù)流的概念是什么

到此,相信大家對(duì)“C++服務(wù)器引擎引入任務(wù)流的概念是什么”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

c++
AI