支撑搜狗所有在线业务,这个C++引擎每日处理百亿请求

789 阅读2分钟

项目名称: 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;
}

  • 作为万能异步客户端。目前支持httpredismysqlkafka协议。
    • 轻松构建效率极高的spider。
  • 实现自定义协议client/server,构建自己的RPC系统。
    • srpc就是以它为基础,作为独立项目开源。支持srpcbrpctrpcthrift等协议。
  • 构建异步任务流,支持常用的串并联,也支持更加复杂的DAG结构。
  • 作为并行计算工具使用。除了网络任务,我们也包含计算任务的调度。所有类型的任务都可以放入同一个流中。
  • 在Linux系统下作为文件异步IO工具使用,性能超过任何标准调用。磁盘IO也是一种任务。
  • 实现任何计算与通讯关系非常复杂的高性能高并发的后端服务。
  • 构建微服务系统。
  • 项目内置服务治理与负载均衡等功能。

项目性能

  • 吞吐和长尾经得住工业级检索系统考验;
  • proxy 压测性能为普通 server 的1/2,为理论最
    大值,说明框架异步调度彻底无损耗。

image.png

除此之外,项目还提供了多个workflow示例供各位开发者学习:

image.png

如果你想要了解更多的项目信息,那就去它的 Gitee 仓库看看吧:gitee.com/sogou/workf…