0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

workflow:适合C++开发者进阶的开源项目

嵌入式学习站 来源:嵌入式学习站 作者:嵌入式学习站 2022-11-25 16:28 次阅读

今天分享一个适合C++开发者进阶的开源项目,这个项目的名字叫workflow,项目地址如下:https://github.com/sogou/workflow

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

项目适用场景

该项目是搜狗的服务器引擎,几乎搜狗所有的后端C++服务和其他几十家公司都在使用这个引擎,每日处理超百亿请求。

不仅如此,该项目也非常适合在嵌入式应用上实现网络的框架设计,框架设计是一个项目成功与否非常重要的环节,而网络在AIOT、智能家居智能硬件上尤其重要。

比如在项目中需要使用http,Workflow在设计上可以通过Cmake配置支持windows 或者 Linux 或 MacOS 等多个平台上的多个项目编译,而且,可以在不同平台上保持相同的接口

如果你新增一个嵌入式设备,比如ESP32,在服务器和客户端只需要维护一套代码,就可以完成自己的应用需求。

真正做到把云端的技术移植到嵌入式设备上运行。

适用于嵌入式几大特点:

1、支持多平台、多体系结构

多平台的代码说明在配置和耦合上考虑了很多设计上的细节。⽬前Workflow除了Linux、Windows、MacOS、Android以外,还可以愉快地在树莓派、国产⻰芯处理器等不同体系结构上运⾏。

2、编译快

Workflow除OpenSSL以外不依赖其他库,⽽且在接口层是没有模版的,因此编译速度⾮常快,不到一分钟即可编出一个可⽤的lib。

3、体积小、支持编译剪裁

Workflow的Kafka协议默认是不编译的,除此之外,还可以裁剪掉其他不常⽤的模块。

并且可以通过strip命令去掉符号链接,即可让库⽂件缩⼩到400k左右。

4、运行时内存小、调度快

作为一个异步调度的库,Workflow调度性能一直是⾮常好的。另外运⾏时内存占⽤也⾮常的小。

5、自定义协议非常方便

社区活跃以及项目负责人积极回复问题也是一个亮点,如果在框架搭建和移植上出现问题,在社区上提问都会得到快速响应。

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

移植到嵌入式设备的开源支持

据悉⽬前已经有许多⽤户⽤到了嵌⼊式上了。github官方也做出了耐心的解释。

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

框架能做什么

1、轻松的搭建server

不用多说,服务端框架如果不能搭建server那还玩啥了,但使用这个框架非常方便,以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、轻松高效的发起客户端请求

项目号称可作为万能异步客户端,目前支持http,redis,mysql、websocket和kafka协议,下面是官方给出的一个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时,可能使用的是传统的客户端。在一个线程下以同步阻塞的方式等待数据到来。如果有多个网络请求希望并发,那么用户需要管理好多个mysql cli对象。

workflow完美的解决了这一系列问题,把所有这种用户请求交给内部的poller线程统一管理,实现了高效的非阻塞IO行为,提升了server作为客户端请求数据时的性能表现。再也不用担心这种客户端行为影响server整体的性能。

支持自定义协议client/server:用户可构建自己的RPC系统,搜狗有个开源项目srpc就是以这个框架为基础实现的。

3、可建构异步任务流

支持串联,支持并联,支持串并联的组合体,也支持复杂的DAG结构。

4、异步IO

在Linux系统下可作为文件异步IO工具使用,性能超过任何标准调用。

5、通信与计算一体化

多数框架都着重于网络IO的效率问题,而计算与任务调度等需要用户自己实现,workflow会自动对任务进行调度,打通网络和磁盘等资源,特别适合需要网络通信的重计算模块。

任务流框架设计

在作者的设计理念中,一切业务逻辑皆是任务,多个任务会组成任务流,任务流可组成图,这个图可能是串联图、并联图,也可能是串并联图,类似于这种:

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

或者是这种复杂的DAG图:

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

当然图的层次结构可由用户自定义,很牛的一点是支持动态创建任务流。

分享结束,希望小伙伴喜欢,嵌入式真需要不断学习去充实自己的大脑,相信你们都能够成为最厉害的程序员

最近很多小伙伴领取了程序员知识图谱,反馈很好。我们知道每一个技术领域都有它完整地知识体系,而良好的知识体系有助于技术人员的发展和成长,减少学习过程中所走的弯路。所以还没有领取的小伙伴赶紧领取起来吧!(底部有领取入口哦)

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5069

    文章

    19021

    浏览量

    303394
  • C++
    C++
    +关注

    关注

    22

    文章

    2104

    浏览量

    73498
  • workflows
    +关注

    关注

    0

    文章

    6

    浏览量

    5919

原文标题:分享一个适合嵌入式的C++开源项目-Workflow

文章出处:【微信号:嵌入式学习站,微信公众号:嵌入式学习站】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    简仪科技第九届开源测控开发者大会精彩回顾

    由简仪科技主办的第九届开源测控开发者大会,近日在上海圆满落幕。
    的头像 发表于 11-19 09:16 234次阅读

    开源共生 商业共赢 | RT-Thread 2024开发者大会报名启动!

    开发者大会将以“开源共生,商业共赢”为主题,将于2024年12月21日全天在上海临港中心举行。开源RT-Thread如何实现商业化?这一直是外界对RT-Thread最
    的头像 发表于 10-29 08:06 243次阅读
    <b class='flag-5'>开源</b>共生 商业共赢 | RT-Thread 2024<b class='flag-5'>开发者</b>大会报名启动!

    KaihongOS 4.1.2开发者预览版正式上线,诚邀开发者免费试用!

    深开鸿在2024开放原子开源生态大会上正式宣布KaihongOS4.1.2开发者预览版全面上线,并向全球开发者开放免费下载。作为KaihongOS不断创新与发展的重要里程碑,此次预览版为开发者
    的头像 发表于 09-28 08:07 298次阅读
    KaihongOS 4.1.2<b class='flag-5'>开发者</b>预览版正式上线,诚邀<b class='flag-5'>开发者</b>免费试用!

    2023 开放原子开发者大会:赋予开发者高光时刻 推进开源生态健康发展

    今天,我们拥抱美好的开源时代,更期待开源的蓬勃未来。今天,我们聚焦开发者的时代价值,更携手行业之力,为其提供肥沃的成长土壤和梦想的施展舞台。 年终岁末,2023 开放原子开发者大会,在
    的头像 发表于 12-22 10:18 358次阅读
    2023 开放原子<b class='flag-5'>开发者</b>大会:赋予<b class='flag-5'>开发者</b>高光时刻 推进<b class='flag-5'>开源</b>生态健康发展

    开源治理与开发者运营分论坛圆满举办

    日益受到广泛关注。 为深度探讨全球开源治理所面对的挑战,12 月 16 日,2023 开放原子开发者大会【开源治理与开发者运营论坛】成功举办,论坛聚焦
    的头像 发表于 12-22 09:59 461次阅读
    <b class='flag-5'>开源</b>治理与<b class='flag-5'>开发者</b>运营分论坛圆满举办

    大咖云集,2023 开放原子开发者大会助力开发者实现梦想

        12 月 16 日,以“一切为了开发者”为主题的开放原子开发者大会在无锡开幕。大会聚焦大模型、云原生、前端、自动驾驶、物联网、开源治理与开发者运营等多内容,汇聚顶尖
    的头像 发表于 12-22 09:57 840次阅读
    大咖云集,2023 开放原子<b class='flag-5'>开发者</b>大会助力<b class='flag-5'>开发者</b>实现梦想

    2023 开放原子开发者大会全日程

    ,基金会做出了哪些成绩? · 开源在科技领域的发展趋势是什么? · 开源可以在哪些领域发挥更大作用的地方? 开源如何助力开发者个人成长? · 开源
    的头像 发表于 12-21 15:06 290次阅读
    2023 开放原子<b class='flag-5'>开发者</b>大会全日程

    「代码舞」2023 开放原子开发者大会——开源大侠秘闻

          2023 开放原子开发者大会 OPEN ATOM DEVELOPERS CONFERENCE 开源大侠 隆重登场   2023.12.16-17   各位技术奇才和编程大咖们,准备好
    的头像 发表于 12-20 16:48 402次阅读
    「代码舞<b class='flag-5'>者</b>」2023 开放原子<b class='flag-5'>开发者</b>大会——<b class='flag-5'>开源</b>大侠秘闻

    触觉智能亮相2023开放原子开发者大会 创新引领开源新篇章

    12月16日,2023开放原子开发者大会在无锡盛大举行,此次大会将通过多样的活动形式,全方位为开发者赋能,共设置1场开幕式主论坛、1场开源大赛决赛、1场编程马拉松、15场技术平行专场、3大专题大会
    的头像 发表于 12-19 08:32 485次阅读
    触觉智能亮相2023开放原子<b class='flag-5'>开发者</b>大会  创新引领<b class='flag-5'>开源</b>新篇章

    大咖云集,2023开放原子开发者大会助力开发者实现梦想

    12月16日,以“一切为了开发者”为主题的开放原子开发者大会在无锡开幕。大会聚焦大模型、云原生、前端、自动驾驶、物联网、开源治理与开发者运营等多内容,汇聚顶尖
    的头像 发表于 12-18 16:05 513次阅读

    鸿智谷亮相2023开放原子开发者大会

    12月16日-17日,2023开放原子开发者大会在无锡落下帷幕,作为开放原子开源基金会的年度盛典,以“一切为了开发者”为主题,聚焦开发者感兴趣热点内容,使参会
    的头像 发表于 12-18 08:30 518次阅读
    鸿智谷亮相2023开放原子<b class='flag-5'>开发者</b>大会

    2023开放原子开发者大会全日程

    ,基金会做出了哪些成绩? · 开源在科技领域的发展趋势是什么? · 开源可以在哪些领域发挥更大作用的地方? 开源如何助力开发者个人成长? · 开源
    的头像 发表于 12-16 16:10 373次阅读
    2023开放原子<b class='flag-5'>开发者</b>大会全日程

    欢迎加入飞腾派开发者社区,感谢每一位开发者

    板紧密地结合在一起,为开发者提供了一个展示和分享自己才华的平台。 基于此次合作,飞腾(广州)技术有限公司给华秋 · 电子发烧友发来了感谢信,这是对此次合作的充分肯定! 来自飞腾派项目组的感谢信
    发表于 12-11 16:11

    「代码舞」2023开放原子开发者大会——开源大侠秘闻

    2023开放原子开发者大会 . OPEN ATOM DEVELOPERS CONFERENCE 开源大侠 隆重登场 2023.12.16-17 各位技术奇才和编程大咖们,准备好了吗? 让我们跃马扬鞭
    的头像 发表于 11-30 20:55 513次阅读
    「代码舞<b class='flag-5'>者</b>」2023开放原子<b class='flag-5'>开发者</b>大会——<b class='flag-5'>开源</b>大侠秘闻

    开箱即用!教你如何正确使用华为云CodeArts IDE for C/C++

    华为云CodeArts IDE 定位华为云开发者桌面 ,是华为云面向开发者提供的一款智能化桌面集成开发环境。CodeArts IDE for C/C
    的头像 发表于 11-29 17:40 760次阅读
    开箱即用!教你如何正确使用华为云CodeArts IDE for <b class='flag-5'>C</b>/<b class='flag-5'>C++</b>!