<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

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

3天內不再提示
電子發燒友網>電子資料下載>電子資料>開源軟件-Sogou C++ Workflow高性能C++服務器引擎

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

2022-06-20 | zip | 0.57 MB | 次下載 | 免費

資料介紹

授權協議 Apache-2.0
開發語言 C/C++
操作系統 跨平臺
軟件類型 開源軟件
所屬分類 服務器軟件、 HTTP服務器

軟件簡介

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

可以使用該項目:

  • 快速搭建http服務器:
#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協議。
  • 實現自定義協議client/server,構建自己的RPC系統。
    • 搜狗RPC就是以它為基礎,作為獨立項目開源。支持srpc,brpcthrift等協議(benchmark)。
  • 構建異步任務流,支持常用的串并聯,也支持更加復雜的DAG結構。
  • 作為并行編程工具使用。除了網絡任務,我們也包含計算任務的調度。所有類型的任務都可以放入同一個流中。
  • Linux系統下作為文件異步IO工具使用,性能超過任何標準調用。磁盤IO也是一種任務。
  • 實現任何計算與通訊關系非常復雜的高性能高并發的后端服務。
  • 構建服務網格(service mesh)系統。
    • 項目內置服務治理與負載均衡等功能。

編譯和運行環境

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

系統設計特點

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

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

基礎任務,任務工廠與復合任務

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

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

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

內存回收機制

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

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

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數據手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>