91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

3天內(nèi)不再提示

workflow:適合C++開發(fā)者進(jìn)階的開源項(xiàng)目

嵌入式學(xué)習(xí)站 ? 來源:嵌入式學(xué)習(xí)站 ? 作者:嵌入式學(xué)習(xí)站 ? 2022-11-25 16:28 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

今天分享一個(gè)適合C++開發(fā)者進(jìn)階的開源項(xiàng)目,這個(gè)項(xiàng)目的名字叫workflow,項(xiàng)目地址如下:https://github.com/sogou/workflow

a4c940ae-6b11-11ed-8abf-dac502259ad0.png

項(xiàng)目適用場景

該項(xiàng)目是搜狗的服務(wù)器引擎,幾乎搜狗所有的后端C++服務(wù)和其他幾十家公司都在使用這個(gè)引擎,每日處理超百億請求。

不僅如此,該項(xiàng)目也非常適合在嵌入式應(yīng)用上實(shí)現(xiàn)網(wǎng)絡(luò)的框架設(shè)計(jì),框架設(shè)計(jì)是一個(gè)項(xiàng)目成功與否非常重要的環(huán)節(jié),而網(wǎng)絡(luò)在AIOT、智能家居、智能硬件上尤其重要。

比如在項(xiàng)目中需要使用http,Workflow在設(shè)計(jì)上可以通過Cmake配置支持windows 或者 Linux 或 MacOS 等多個(gè)平臺上的多個(gè)項(xiàng)目編譯,而且,可以在不同平臺上保持相同的接口。

如果你新增一個(gè)嵌入式設(shè)備,比如ESP32,在服務(wù)器和客戶端只需要維護(hù)一套代碼,就可以完成自己的應(yīng)用需求。

真正做到把云端的技術(shù)移植到嵌入式設(shè)備上運(yùn)行。

適用于嵌入式幾大特點(diǎn):

1、支持多平臺、多體系結(jié)構(gòu)

多平臺的代碼說明在配置和耦合上考慮了很多設(shè)計(jì)上的細(xì)節(jié)。?前Workflow除了Linux、Windows、MacOS、Android以外,還可以愉快地在樹莓派、國產(chǎn)?芯處理器等不同體系結(jié)構(gòu)上運(yùn)?。

2、編譯快

Workflow除OpenSSL以外不依賴其他庫,?且在接口層是沒有模版的,因此編譯速度?常快,不到一分鐘即可編出一個(gè)可?的lib。

3、體積小、支持編譯剪裁

Workflow的Kafka協(xié)議默認(rèn)是不編譯的,除此之外,還可以裁剪掉其他不常?的模塊。

并且可以通過strip命令去掉符號鏈接,即可讓庫?件縮?到400k左右。

4、運(yùn)行時(shí)內(nèi)存小、調(diào)度快

作為一個(gè)異步調(diào)度的庫,Workflow調(diào)度性能一直是?常好的。另外運(yùn)?時(shí)內(nèi)存占?也?常的小。

5、自定義協(xié)議非常方便

社區(qū)活躍以及項(xiàng)目負(fù)責(zé)人積極回復(fù)問題也是一個(gè)亮點(diǎn),如果在框架搭建和移植上出現(xiàn)問題,在社區(qū)上提問都會得到快速響應(yīng)。

a506848c-6b11-11ed-8abf-dac502259ad0.png

移植到嵌入式設(shè)備的開源支持

據(jù)悉?前已經(jīng)有許多?戶?到了嵌?式上了。github官方也做出了耐心的解釋。

a5246c5e-6b11-11ed-8abf-dac502259ad0.png

框架能做什么

1、輕松的搭建server

不用多說,服務(wù)端框架如果不能搭建server那還玩啥了,但使用這個(gè)框架非常方便,以http server為例,只需要簡單幾行代碼即可:

#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; }

2、輕松高效的發(fā)起客戶端請求

項(xiàng)目號稱可作為萬能異步客戶端,目前支持http,redis,mysql、websocket和kafka協(xié)議,下面是官方給出的一個(gè)mysql的客戶端示例:

int main(int argc, char *argv[]) { ... WFMySQLTask *task = WFTaskFactory::create_mysql_task(url, RETRY_MAX, mysql_callback); task->get_req()->set_query("SHOW TABLES;"); ... task->start(); ... }

以往的C++ server需要訪問mysql時(shí),可能使用的是傳統(tǒng)的客戶端。在一個(gè)線程下以同步阻塞的方式等待數(shù)據(jù)到來。如果有多個(gè)網(wǎng)絡(luò)請求希望并發(fā),那么用戶需要管理好多個(gè)mysql cli對象。

workflow完美的解決了這一系列問題,把所有這種用戶請求交給內(nèi)部的poller線程統(tǒng)一管理,實(shí)現(xiàn)了高效的非阻塞IO行為,提升了server作為客戶端請求數(shù)據(jù)時(shí)的性能表現(xiàn)。再也不用擔(dān)心這種客戶端行為影響server整體的性能。

支持自定義協(xié)議client/server:用戶可構(gòu)建自己的RPC系統(tǒng),搜狗有個(gè)開源項(xiàng)目srpc就是以這個(gè)框架為基礎(chǔ)實(shí)現(xiàn)的。

3、可建構(gòu)異步任務(wù)流

支持串聯(lián),支持并聯(lián),支持串并聯(lián)的組合體,也支持復(fù)雜的DAG結(jié)構(gòu)。

4、異步IO

在Linux系統(tǒng)下可作為文件異步IO工具使用,性能超過任何標(biāo)準(zhǔn)調(diào)用。

5、通信與計(jì)算一體化

多數(shù)框架都著重于網(wǎng)絡(luò)IO的效率問題,而計(jì)算與任務(wù)調(diào)度等需要用戶自己實(shí)現(xiàn),workflow會自動(dòng)對任務(wù)進(jìn)行調(diào)度,打通網(wǎng)絡(luò)和磁盤等資源,特別適合需要網(wǎng)絡(luò)通信的重計(jì)算模塊。

任務(wù)流框架設(shè)計(jì)

在作者的設(shè)計(jì)理念中,一切業(yè)務(wù)邏輯皆是任務(wù),多個(gè)任務(wù)會組成任務(wù)流,任務(wù)流可組成圖,這個(gè)圖可能是串聯(lián)圖、并聯(lián)圖,也可能是串并聯(lián)圖,類似于這種:

a5513f72-6b11-11ed-8abf-dac502259ad0.png

或者是這種復(fù)雜的DAG圖:

a589510a-6b11-11ed-8abf-dac502259ad0.png

當(dāng)然圖的層次結(jié)構(gòu)可由用戶自定義,很牛的一點(diǎn)是支持動(dòng)態(tài)創(chuàng)建任務(wù)流。

分享結(jié)束,希望小伙伴喜歡,嵌入式真需要不斷學(xué)習(xí)去充實(shí)自己的大腦,相信你們都能夠成為最厲害的程序員。

最近很多小伙伴領(lǐng)取了程序員知識圖譜,反饋很好。我們知道每一個(gè)技術(shù)領(lǐng)域都有它完整地知識體系,而良好的知識體系有助于技術(shù)人員的發(fā)展和成長,減少學(xué)習(xí)過程中所走的彎路。所以還沒有領(lǐng)取的小伙伴趕緊領(lǐng)取起來吧!(底部有領(lǐng)取入口哦)

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5198

    文章

    20449

    瀏覽量

    334090
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2124

    瀏覽量

    77121
  • workflows
    +關(guān)注

    關(guān)注

    0

    文章

    6

    瀏覽量

    6131

原文標(biāo)題:分享一個(gè)適合嵌入式的C++開源項(xiàng)目-Workflow

文章出處:【微信號:嵌入式學(xué)習(xí)站,微信公眾號:嵌入式學(xué)習(xí)站】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    2025全球開發(fā)者先鋒大會開源項(xiàng)目與AI的雙向賦能分論壇圓滿舉辦

    12月12日,2025全球開發(fā)者先鋒大會——開源項(xiàng)目與AI的雙向賦能分論壇在上海張江科學(xué)會堂成功舉行。論壇以“共生共榮,智創(chuàng)未來”為主題,匯聚開放原子開源基金會、華為、中國移動(dòng)、深開鴻
    的頭像 發(fā)表于 12-22 15:58 ?528次閱讀

    CC++之間的聯(lián)系

    ,后來才逐漸演變?yōu)橐环N成熟的面向?qū)ο缶幊陶Z言。 總之,C語言和C++雖然有很多共同之處,但在編程范式、安全性、抽象層次等方面存在顯著差異。開發(fā)者可以根據(jù)項(xiàng)目需求選擇合適的語言,
    發(fā)表于 12-11 06:51

    開發(fā)者為核心驅(qū)動(dòng)開源項(xiàng)目邁向成熟

    11月21-22日,以“一切為了開發(fā)者——AI共智·開源共享”為主題的2025開放原子開源開發(fā)者大會在北京成功舉辦。大會聚焦人工智能、基礎(chǔ)軟件等重點(diǎn)方向,來自產(chǎn)業(yè)界、高校、科研機(jī)構(gòu)和
    的頭像 發(fā)表于 12-04 10:09 ?682次閱讀

    2025開放原子開發(fā)者大會初創(chuàng)與高潛開源項(xiàng)目發(fā)展分論壇成功舉辦

    近日,2025開放原子開發(fā)者大會——初創(chuàng)和高潛項(xiàng)目分論壇在北京成功舉辦。這場聚焦行業(yè)新生力量的專業(yè)盛會,匯聚了開源領(lǐng)域資深實(shí)踐、初創(chuàng)項(xiàng)目負(fù)
    的頭像 發(fā)表于 12-04 10:05 ?716次閱讀

    2025開源鴻蒙開發(fā)者激勵(lì)計(jì)劃正式啟動(dòng)

    11月21日,2025開放原子開發(fā)者大會盛大啟幕,聚焦“AI共智,開源共享”主題,吸引了來自全球的開發(fā)者、企業(yè)技術(shù)領(lǐng)袖、社區(qū)維護(hù)及高??蒲辛α繀W鳛榇髸闹匾M成部分,
    的頭像 發(fā)表于 11-27 14:44 ?673次閱讀

    RT-Thread榮膺開放原子開源先鋒項(xiàng)目,社區(qū)開發(fā)者斬獲“開源貢獻(xiàn)之星”|新聞速遞

    近日,2025開放原子開發(fā)者大會在京開幕。大會舉行了“中國開源創(chuàng)新力量致謝儀式”,向操作系統(tǒng)、數(shù)據(jù)庫、人工智能三大技術(shù)領(lǐng)域28個(gè)開源先鋒項(xiàng)目中作出卓越貢獻(xiàn)的47位
    的頭像 發(fā)表于 11-24 18:48 ?458次閱讀
    RT-Thread榮膺開放原子<b class='flag-5'>開源</b>先鋒<b class='flag-5'>項(xiàng)目</b>,社區(qū)<b class='flag-5'>開發(fā)者</b>斬獲“<b class='flag-5'>開源</b>貢獻(xiàn)之星”|新聞速遞

    2025開放原子開發(fā)者大會初創(chuàng)與高潛開源項(xiàng)目發(fā)展分論壇即將啟幕

    開源生態(tài)蓬勃發(fā)展的當(dāng)下,一批技術(shù)創(chuàng)新性強(qiáng)、成長潛力大的開源項(xiàng)目正嶄露頭角。為賦能更多“潛能之星”,傳遞可復(fù)用的解決方案與行動(dòng)路徑,2025開放原子開發(fā)者大會——初創(chuàng)與高潛
    的頭像 發(fā)表于 11-20 11:39 ?720次閱讀

    2025開放原子開發(fā)者大會AtomGit開源實(shí)踐交流分論壇即將開啟

    當(dāng)前,全球開源生態(tài)正持續(xù)蓬勃發(fā)展,開發(fā)者協(xié)作模式與開源創(chuàng)新范式也隨之經(jīng)歷深刻變革。在此趨勢下,以開發(fā)者為中心的AtomGit,創(chuàng)新融合“開源
    的頭像 發(fā)表于 11-17 16:32 ?959次閱讀

    開發(fā)者眼中的開源魅力

    、openKylin、OpenTenBase開源項(xiàng)目社區(qū)的開發(fā)者,聆聽他們與開源相遇、相伴、相成長的故事,感受那份超越代碼本身的價(jià)值與魅力。
    的頭像 發(fā)表于 06-24 11:38 ?937次閱讀

    從“開發(fā)者孤島”到“生態(tài)星河”:開鴻Bot如何重構(gòu)開源鴻蒙開發(fā)體驗(yàn)

    在中國操作系統(tǒng)發(fā)展史上,“開發(fā)者”似乎從來都是一個(gè)邊緣角色。他們是開源社區(qū)中最活躍的群體,卻也是最常被忽視的那群人。具體到開源鴻蒙社區(qū),其生態(tài)構(gòu)建初期,諸多開發(fā)者曾坦言,“鴻蒙很好,但
    的頭像 發(fā)表于 06-10 17:12 ?1695次閱讀
    從“<b class='flag-5'>開發(fā)者</b>孤島”到“生態(tài)星河”:開鴻Bot如何重構(gòu)<b class='flag-5'>開源</b>鴻蒙<b class='flag-5'>開發(fā)</b>體驗(yàn)

    潤和軟件旗下潤開鴻亮相開源鴻蒙開發(fā)者大會2025

    近日,開源鴻蒙開發(fā)者大會2025(OHDC.2025)于深圳再啟新篇,會上正式發(fā)布了開源鴻蒙5.1 Release版本,并進(jìn)行開源鴻蒙應(yīng)用技術(shù)組件共建啟動(dòng)等重要儀式,面向
    的頭像 發(fā)表于 06-03 16:22 ?1633次閱讀

    華為亮相2025開源鴻蒙開發(fā)者大會

    近日,開源鴻蒙開發(fā)者大會2025(以下簡稱大會)在深圳成功舉辦。大會以開源鴻蒙5.1 Release版本發(fā)布為契機(jī),聚焦開源鴻蒙技術(shù)革新和社區(qū)發(fā)展,全面呈現(xiàn)“Powered
    的頭像 發(fā)表于 05-29 09:07 ?1318次閱讀

    開發(fā)者分享】開源硬核玩家集結(jié):這些MCU板子泰酷了!

    前言本篇文章內(nèi)容主要收錄了由開發(fā)者基于先楫半導(dǎo)體高性能MCU開發(fā)的各類DIY開源硬件項(xiàng)目,涵蓋不同應(yīng)用方向與創(chuàng)意實(shí)踐。部分項(xiàng)目代碼可直接在本
    的頭像 發(fā)表于 05-26 17:31 ?1634次閱讀
    【<b class='flag-5'>開發(fā)者</b>分享】<b class='flag-5'>開源</b>硬核玩家集結(jié):這些MCU板子泰酷了!

    2025開源鴻蒙開發(fā)者大會圓滿落幕

    近日,開源鴻蒙開發(fā)者大會2025(OHDC.2025,簡稱“大會”)在深圳隆重開幕。大會正式發(fā)布了開源鴻蒙5.1 Release版本,舉行了開源鴻蒙應(yīng)用技術(shù)組件共建啟動(dòng)、
    的頭像 發(fā)表于 05-26 17:03 ?1374次閱讀

    深開鴻C(jī)EO王成錄:開發(fā)者開源鴻蒙生態(tài)的原點(diǎn)

    5月24日,深開鴻正式發(fā)布全國首款面向開發(fā)者開源鴻蒙學(xué)習(xí)平臺——開鴻Bot系列產(chǎn)品。這是開源鴻蒙在開發(fā)者終端領(lǐng)域的關(guān)鍵落地,更是深開鴻貫徹“以開發(fā)
    的頭像 發(fā)表于 05-26 12:06 ?883次閱讀
    深開鴻C(jī)EO王成錄:<b class='flag-5'>開發(fā)者</b>是<b class='flag-5'>開源</b>鴻蒙生態(tài)的原點(diǎn)