项目名称: Workflow
项目作者: 搜狗开源团队
开源许可协议: Apache-2.0
项目地址:gitee.com/sogou/workf…
项目简介
Workflow 是搜狗公司 C++ 服务器引擎,支撑搜狗几乎所有后端 C++ 在线服务,包括所有搜索服务,云输入法,在线广告等,每日处理超百亿请求。这是一个设计轻盈优雅的企业级程序引擎,可以满足大多数 C++ 后端开发需求。
项目特点
1.计算与通信融为一体
特别适合需要网络通信的重计算模块;
2.优异的性能
不单网络、磁盘IO或CPU计算,而是着眼于让所有异步资源都尽可能被全部调起;
3.架构层次适合组装与复用
提出算法、协议、业务逻辑分离的编程思想,统一的
开发模式让一切都以任务形式组装;
4.用户体验友好
接口简洁、提供常用协议、使用方式符合人类思维。
项目用途
- 快速搭建http服务器
#include <stdio.h>
#include "workflow/WFHttpServer.h"
int main()
{
WFHttpServer server([](WFHttpTask *task) {
task->get_resp()->append_output_body("<html>Hello World!</html>");
});
if (server.start(8888) == 0) { // start server on port 8888
getchar(); // press "Enter" to end.
server.stop();
}
return 0;
}
- 作为万能异步客户端。目前支持
http,redis,mysql和kafka协议。- 轻松构建效率极高的spider。
- 实现自定义协议client/server,构建自己的RPC系统。
- srpc就是以它为基础,作为独立项目开源。支持
srpc,brpc,trpc和thrift等协议。
- srpc就是以它为基础,作为独立项目开源。支持
- 构建异步任务流,支持常用的串并联,也支持更加复杂的DAG结构。
- 作为并行计算工具使用。除了网络任务,我们也包含计算任务的调度。所有类型的任务都可以放入同一个流中。
- 在Linux系统下作为文件异步IO工具使用,性能超过任何标准调用。磁盘IO也是一种任务。
- 实现任何计算与通讯关系非常复杂的高性能高并发的后端服务。
- 构建微服务系统。
- 项目内置服务治理与负载均衡等功能。
项目性能
- 吞吐和长尾经得住工业级检索系统考验;
- proxy 压测性能为普通 server 的1/2,为理论最
大值,说明框架异步调度彻底无损耗。
除此之外,项目还提供了多个workflow示例供各位开发者学习:
如果你想要了解更多的项目信息,那就去它的 Gitee 仓库看看吧:gitee.com/sogou/workf…