资料介绍
软件简介
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
,mysql
和kafka
协议。 -
实现自定义协议client/server,构建自己的RPC系统。
-
搜狗RPC就是以它为基础,作为独立项目开源。支持
srpc
,brpc
和thrift
等协议(benchmark)。
-
搜狗RPC就是以它为基础,作为独立项目开源。支持
- 构建异步任务流,支持常用的串并联,也支持更加复杂的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
的编译器编译。但不依赖boost
或asio
。 -
项目无其它依赖,但是包含了
lz4
,zstd
和snappy
几个压缩库的无改动源代码(kafka
协议需要)。
系统设计特点
典型后端服务器由以下三个部分组成,并且完全独立开发。
-
协议
- 大多数情况下,用户使用的是内置的通用网络协议,例如http,redis或各种rpc。
- 用户可以方便的自定义网络协议,只需提供序列化和反序列化函数,就可以定义出自己的client/server。
-
算法
-
在 Sogou C++ Workflow 的设计里,算法是与协议对称的概念。
- 如果说协议的调用是rpc,算法的调用就是一次apc(Async Procedure Call)。
- 提供了一些通用算法,例如sort,merge,psort,reduce,可以直接使用。
- 与自定义协议相比,自定义算法的使用要常见得多。任何一次边界清晰的复杂计算,都应该包装成算法。
-
在 Sogou C++ Workflow 的设计里,算法是与协议对称的概念。
-
任务流
- 任务流就是实际的业务逻辑,就是把开发好的协议与算法放在流程图里使用起来。
- 典型的任务流是一个闭合的串并联图。复杂的业务逻辑,可能是一个非闭合的DAG。
- 任务流图可以直接构建,也可以根据每一步的结果动态生成。所有任务都是异步执行的。
基础任务,任务工厂与复合任务
- 系统中包含六种基础任务:通讯,文件IO,CPU,GPU,定时器,计数器。
-
一切任务都由任务工厂产生,并且在callback之后自动回收。
- server任务是一种特殊的通讯任务,由框架调用任务工厂产生,通过process函数交给用户。
- 大多数情况下,用户通过任务工厂产生的任务,都是一个复合任务,但用户并不感知。
异步性和基于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
来管理内存。
下载该资料的人也在下载
下载该资料的人还在阅读
更多 >
- C和C++实物精选《C专家编程》 0次下载
- C和C++经典著作《C和指针》 0次下载
- C和C++经典著作-C专家编程.PDF 0次下载
- 基于C++和SCPI的功率传感器自动校准软件 22次下载
- C++程序设计的基础知识初步了解C++的资料免费下载 25次下载
- C++开源库的详细资料合集免费下载
- C++的开源库大全详细资料说明
- C++程序设计教程之C++的初步知识的详细资料说明 31次下载
- Visual C++教程之C++的基础知识介绍 9次下载
- 如何从C转向C++ Effective C++ PDF中文版教材免费下载 0次下载
- VISUAL C++教程之VISUAL C++的安装和使用方法 19次下载
- 如何提高c和c++的安全编程能力?《C和C++安全编码》带你详细学习 0次下载
- C++C/C++程序设计教程_C/C++概述 0次下载
- C++课件 0次下载
- c++程序设计教程
- C++中实现类似instanceof的方法 335次阅读
- vb语言和c++语言的区别 1484次阅读
- C++简史:C++是如何开始的 415次阅读
- C语言和C++中那些不同的地方 748次阅读
- 如何把C++程序改写成C语言 3150次阅读
- C与C++混合编程是什么 1309次阅读
- C++可移植性及多线程 883次阅读
- C++项目常见的命名规范 1969次阅读
- C++语言的发展 558次阅读
- C/C++基础知识汇总 2226次阅读
- C++:引用的使用场景 3940次阅读
- 图文详解:C++的输出输入 3289次阅读
- C++封装:this指针 3371次阅读
- C++到底适不适合桌面软件开发C++的应用方向和发展分析 1.8w次阅读
- C/C++/OpenCL 应用编译的SDSoC开发 2150次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多