日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

電子發(fā)燒友App

硬聲App

掃碼添加小助手

加入工程師交流群

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>開源軟件-Sogou C++ Workflow高性能C++服務(wù)器引擎

開源軟件-Sogou C++ Workflow高性能C++服務(wù)器引擎

2022-06-20 | zip | 0.57 MB | 次下載 | 2積分

資料介紹

授權(quán)協(xié)議 Apache-2.0
開發(fā)語言 C/C++
軟件類型 開源軟件

軟件簡介

Sogou C++ Workflow 是搜狗公司的 C++ 服務(wù)器引擎,支撐搜狗幾乎所有后端 C++ 在線服務(wù),包括所有搜索服務(wù)、云輸入法與在線廣告等,每日處理超百億請求。這是一個設(shè)計輕盈優(yōu)雅的企業(yè)級程序引擎,可以滿足大多數(shù) C++ 后端開發(fā)需求。

可以使用該項目:

  • 快速搭建http服務(wù)器:
#include 
#include "workflow/WFHttpServer.h"

int main()
{
    WFHttpServer server([](WFHttpTask *task) {
        task->get_resp()->append_output_body("Hello World!");
    });

    if (server.start(8888) == 0) {  // start server on port 8888
        getchar(); // press "Enter" to end.
        server.stop();
    }

    return 0;
}
  • 作為萬能異步客戶端。目前支持http,redis,mysqlkafka協(xié)議。
  • 實現(xiàn)自定義協(xié)議client/server,構(gòu)建自己的RPC系統(tǒng)。
    • 搜狗RPC就是以它為基礎(chǔ),作為獨立項目開源。支持srpc,brpcthrift等協(xié)議(benchmark)。
  • 構(gòu)建異步任務(wù)流,支持常用的串并聯(lián),也支持更加復(fù)雜的DAG結(jié)構(gòu)。
  • 作為并行編程工具使用。除了網(wǎng)絡(luò)任務(wù),我們也包含計算任務(wù)的調(diào)度。所有類型的任務(wù)都可以放入同一個流中。
  • Linux系統(tǒng)下作為文件異步IO工具使用,性能超過任何標(biāo)準(zhǔn)調(diào)用。磁盤IO也是一種任務(wù)。
  • 實現(xiàn)任何計算與通訊關(guān)系非常復(fù)雜的高性能高并發(fā)的后端服務(wù)。
  • 構(gòu)建服務(wù)網(wǎng)格(service mesh)系統(tǒng)。
    • 項目內(nèi)置服務(wù)治理與負載均衡等功能。

編譯和運行環(huán)境

  • 項目支持LinuxmacOS,Windows等操作系統(tǒng)。
    • Windows版暫時以獨立branch發(fā)布,使用iocp實現(xiàn)異步網(wǎng)絡(luò)。用戶接口Linux版一致。
  • 支持所有CPU平臺,包括32或64位x86處理器,大端或小端arm處理器。
  • 需要依賴于OpenSSL,推薦OpenSSL 1.1及以上版本。
  • 項目使用了C++11標(biāo)準(zhǔn),需要用支持C++11的編譯器編譯。但不依賴boostasio
  • 項目無其它依賴,但是包含了lz4zstdsnappy幾個壓縮庫的無改動源代碼(kafka協(xié)議需要)。

系統(tǒng)設(shè)計特點

典型后端服務(wù)器由以下三個部分組成,并且完全獨立開發(fā)。

  • 協(xié)議
    • 大多數(shù)情況下,用戶使用的是內(nèi)置的通用網(wǎng)絡(luò)協(xié)議,例如http,redis或各種rpc。
    • 用戶可以方便的自定義網(wǎng)絡(luò)協(xié)議,只需提供序列化和反序列化函數(shù),就可以定義出自己的client/server。
  • 算法
    • 在 Sogou C++ Workflow 的設(shè)計里,算法是與協(xié)議對稱的概念。
      • 如果說協(xié)議的調(diào)用是rpc,算法的調(diào)用就是一次apc(Async Procedure Call)。
    • 提供了一些通用算法,例如sort,merge,psort,reduce,可以直接使用。
    • 與自定義協(xié)議相比,自定義算法的使用要常見得多。任何一次邊界清晰的復(fù)雜計算,都應(yīng)該包裝成算法。
  • 任務(wù)流
    • 任務(wù)流就是實際的業(yè)務(wù)邏輯,就是把開發(fā)好的協(xié)議與算法放在流程圖里使用起來。
    • 典型的任務(wù)流是一個閉合的串并聯(lián)圖。復(fù)雜的業(yè)務(wù)邏輯,可能是一個非閉合的DAG。
    • 任務(wù)流圖可以直接構(gòu)建,也可以根據(jù)每一步的結(jié)果動態(tài)生成。所有任務(wù)都是異步執(zhí)行的。

基礎(chǔ)任務(wù),任務(wù)工廠與復(fù)合任務(wù)

  • 系統(tǒng)中包含六種基礎(chǔ)任務(wù):通訊,文件IO,CPU,GPU,定時器,計數(shù)器。
  • 一切任務(wù)都由任務(wù)工廠產(chǎn)生,并且在callback之后自動回收。
    • server任務(wù)是一種特殊的通訊任務(wù),由框架調(diào)用任務(wù)工廠產(chǎn)生,通過process函數(shù)交給用戶。
  • 大多數(shù)情況下,用戶通過任務(wù)工廠產(chǎn)生的任務(wù),都是一個復(fù)合任務(wù),但用戶并不感知。
    • 例如,一次http請求,可能包含許多次異步過程(DNS,重定向),但對用戶來講,就是一次通信任務(wù)。
    • 文件排序,看起來就是一個算法,但其實包括復(fù)雜的文件IO與CPU計算的交互過程。
    • 如果把業(yè)務(wù)邏輯想象成用設(shè)計好的電子元件搭建電路,那么每個電子元件內(nèi)部可能又是一個復(fù)雜電路。

異步性和基于C++11 std::function的封裝

  • 不是基于用戶態(tài)協(xié)程。使用者需要知道自己在寫異步程序。
  • 一切調(diào)用都是異步執(zhí)行,幾乎不存在占著線程等待的操作。
    • 雖然我們也提供一些便利的半同步接口,但并不是核心的功能。
  • 盡量避免派生,以std::function封裝用戶行為,包括:
    • 任何任務(wù)的callback。
    • 任何server的process。符合FaaS(Function as a Service)思想。
    • 一個算法的實現(xiàn),簡單來講也是一個std::function。但算法也可以用派生實現(xiàn)。

內(nèi)存回收機制

  • 任何任務(wù)都會在callback之后被自動內(nèi)存回收。如果創(chuàng)建的任務(wù)不想運行,則需要通過dismiss方法釋放。
  • 任務(wù)中的數(shù)據(jù),例如網(wǎng)絡(luò)請求的resp,也會隨著任務(wù)被回收。此時用戶可通過std::move()把需要的數(shù)據(jù)移走。
  • SeriesWork和ParallelWork是兩種框架對象,同樣在callback之后被回收。
  • 項目中不使用std::shared_ptr來管理內(nèi)存。
?

服務(wù)器 C++ workflows
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1矽力杰 Silergy SY7215A 同步升壓調(diào)節(jié)器 規(guī)格書 Datasheet 佰祥電子
  2. 1.12 MB  |  5次下載  |  免費
  3. 2HT81696H 內(nèi)置升壓的30W立體聲D類音頻功放數(shù)據(jù)手冊
  4. 1.21 MB   |  1次下載  |  免費
  5. 3HTA6863 3W超低噪聲超低功耗單聲道D類音頻功率放大器數(shù)據(jù)手冊
  6. 0.87 MB   |  次下載  |  免費
  7. 4南芯 Southchip SC8802C 充電控制器 規(guī)格書 Datasheet 佰祥電子
  8. 88.16 KB  |  次下載  |  免費
  9. 5矽力杰 Silergy SY7065 同步升壓轉(zhuǎn)換器 規(guī)格書 Datasheet 佰祥電子
  10. 910.67 KB  |  次下載  |  免費
  11. 6矽力杰 Silergy SY7066 同步升壓轉(zhuǎn)換器 規(guī)格書 Datasheet 佰祥電子
  12. 989.14 KB  |  次下載  |  免費
  13. 7WD6208A產(chǎn)品規(guī)格書
  14. 631.24 KB  |  次下載  |  免費
  15. 8NB685 26 V,12 A,低靜態(tài)電流,大電流 同步降壓變換器數(shù)據(jù)手冊
  16. 1.64 MB   |  次下載  |  2 積分

本月

  1. 1EMC PCB設(shè)計總結(jié)
  2. 0.33 MB   |  12次下載  |  免費
  3. 2PD取電芯片 ECP5702規(guī)格書
  4. 0.88 MB   |  5次下載  |  免費
  5. 3矽力杰 Silergy SY7215A 同步升壓調(diào)節(jié)器 規(guī)格書 Datasheet 佰祥電子
  6. 1.12 MB  |  5次下載  |  免費
  7. 4氮化鎵GaN FET/GaN HEMT 功率驅(qū)動電路選型表
  8. 0.10 MB   |  3次下載  |  免費
  9. 5PD取電芯片,可取5/9/12/15/20V電壓ECP5702數(shù)據(jù)手冊
  10. 0.88 MB   |  3次下載  |  免費
  11. 6SY50655 用于高輸入電壓應(yīng)用的偽固定頻率SSR反激式穩(wěn)壓器英文資料
  12. 1.01 MB   |  3次下載  |  免費
  13. 7怎么為半導(dǎo)體測試儀選擇精密放大器
  14. 0.65 MB   |  2次下載  |  免費
  15. 8SY52341 次級側(cè)同步整流英文手冊
  16. 0.94 MB   |  2次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935137次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計
  4. 1.48MB  |  420064次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233095次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費下載
  8. 340992  |  191469次下載  |  10 積分
  9. 5十天學(xué)會AVR單片機與C語言視頻教程 下載
  10. 158M  |  183360次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81606次下載  |  10 積分
  13. 7Keil工具MDK-Arm免費下載
  14. 0.02 MB  |  73832次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65991次下載  |  10 積分
昌平区| 五河县| 霍邱县| 屏边| 南华县| 鹤峰县| 福州市| 精河县| 定西市| 朝阳区| 报价| 中超| 宁安市| 黄陵县| 安庆市| 渑池县| 革吉县| 军事| 紫云| 温泉县| 静乐县| 岑溪市| 拜泉县| 辽阳县| 潞西市| 昭觉县| 大关县| 峨眉山市| 绿春县| 清水河县| 调兵山市| 冕宁县| 南丰县| 丹东市| 汉沽区| 同德县| 德令哈市| 东丽区| 大冶市| 楚雄市| 青龙|