【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

搜狗开源轻量级 C++ 服务器引擎

  • 2020-09-03
  • 本文字数:1792 字

    阅读完需:约 6 分钟

搜狗开源轻量级C++服务器引擎

9 月 3 日,搜狗公司正式宣布开源 C++服务器引擎——Sogou C++Workflow。


目前 Workflow 支撑着搜狗几乎所有后端 C++在线服务包括所有搜索服务,云输入法,在线广告等,每日处理数百亿请求,引擎一经发布就在 GitHub 上引起众多开发者关注。这款引擎不仅实现了高性能、轻量级的落地,还创新性的引入任务流概念,实现了计算任务与通信任务的统一和协同调度。基于 Workflow 引擎,开发者可以方便的实现复杂的业务逻辑,并进一步满足对高并发、高性能 C++服务器程序的开发需求。


Sogou C++Workflow 地址:https://github.com/sogou/workflow

轻量级、高性能, Sogou C++ Workflow 助力企业降本增效

Workflow 在设计之初,就秉持着高性能与轻量级两个核心理念。长久以来,业界中优化服务器性能都主要专注于如何跑满 cpu、如何单独地让网络请求极速响应等方面。而此次上线搜狗 Workflow 则更专注于如何让各种网络资源被具体的调度器管理,使其尽可能地全部调度起来。



另一方面,对多通信计算资源融为一体的解决方案,进一步提升了 Workflow 引擎的性能。过去开发者在面临选择高吞吐网络框架时,需要自己面对不同计算资源比例而划分不同大小的线程池。然而每种计算具体资源需求比例是动态变化的,重要性也不一样,后端响应时长也是动态变动。如今在 workflow 的加持下,C++服务器引擎也能像 Go 语言一样,实现网络资源异步调度,并且进一步打通计算,磁盘等资源。



引入任务流概念,是搜狗 Workflow 引擎的另一亮点。Workflow 将资源高度封装,用户再也接触不到连接池、线程池、包括想要做 aio 时的文件 fd 与各种异步通知机制。这就意味着,在开发阶段开发人员仅仅需要了解业务关系而不用关心内部细节,帮助开发者们实现自己复杂的业务逻辑。


开发人员可以利用 Workflow 封装好的各种任务来动态或静态组建自己的业务逻辑,如下图所示,不同类型的任务都可以被串行、并行到一起:



除了各种创新设计以外,workflow 还拥有比其他 C++框架更友好的用户体验。过去许多企业自己搭建的服务器平台,在设计之初并未考虑到对多平台、多协议的支持,导致当新需求出现之时,开发者不得不通过自定义框架等方式来解决这个问题。Workflow 原生实现了对 http、redis、mysql 和 kafka 等协议,可以直接作为这些协议的客户端使用。并且在其基础上开发了一套更加易用的 Sogou RPC,实现与 brpc 和 thrift 互通,IDL 支持 protobuf 和 thrift,并且可以通过 http+json 或 IDL 实现跨语言,Sogou RPC 项目也会在不久的将来开源。

Http Server 性能实测:Sogou C++Workflow VS nginx、brpc

为了充分的体现出 Workflow 在性能上的优势,搜狗也提供了 Workflow 和 nginx、brpc 两个比较主流知名的系统一起做的 http server 性能对比。


测试环境:


这里选取了最基本的测试场景:wrk 或者 wrk2 跨机做 client,单 server,长连接,CPU:40 核 E5-2630 v4 @ 2.20GHz,内存:192GB,网卡:25000Mb/s。nginx 配置了 auto 的进程数(与核数一致),brpc 配置了 40 个 nthreads,workflow 配置了 16 个 poller 线程和 20 个 handler 线程。


测试一:不同并发数对 QPS 的影响(越高越好)



结论:随着压测并发数的增加,server 的 QPS 会随着增高。可以看到 Workflow 无论是低并发数还是高并发数的情况下,QPS 依然比 nginx 和 brpc 要高,尤其是并发数超过 128 的时候优势更加明显,Workfow 对于小包基本能保证 50w 的 QPS,说明内部对网络资源的高并发调度做了很多优化。


测试二:不同数据大小对 QPS 的影响(越高越好)



结论:此处的返回包大小是 http 请求的 body 大小,随着返回包增大,QPS 会有所下降,我们希望 QPS 依然尽可能保持平稳不要下降得太快。Workflow 在同并发下的性能依然比其他两个系统要好,说明网络收发和其他调用之间的调度协调得更好。


测试三:固定 QPS 下的延迟分布 CDF 图(越左越好,越直越好)



结论:本测试由 wrk2 进行固定 QPS 的压测,其中还有 1%的长尾请求 Outiler,长尾请求不计入结果,因为我们关注的是模拟真实情况下普通请求能否被及时处理。由于 nginx 在其他测试中性能略差一截,因此没有对其进行 CDF 对比。可以看到在不同比例的分布中,Workflow 的延迟更低、且最慢的那些(0.99 到 1.00 之间)延迟增长也相对缓慢,说明 Workflow 对长尾处理更及时。


通过对比,可以发现 Workflow 的确在核心性能上有着自己独到的优势,对于很多开发者来说,往后也就多了一种选择。


2020-09-03 13:5110217

评论 4 条评论

发布
用户头像
自己后台业务做得烂,和proxy什么关系,真6
2020-09-23 15:37
回复
用户头像
👏
2020-09-04 11:20
回复
用户头像
谢谢分享,改天下来阅读下。又gitee的镜像妈?
2020-09-03 16:03
回复
暂时没有放到gitee上~欢迎试用欢迎与我们多多交流哟~
2020-09-03 21:03
回复
没有更多了
发现更多内容

MS Office 冷门却实用的技巧及软件安装包分享(文末有福利)

淋雨

Office office365

手把手教你学Dapr - 7. Actors

MASA技术团队

C# .net 微软 微服务 dapr

中国AIOps们,你们究竟是在骗谁?

Geek_2749b8

云计算 AIOPS 云服务

中国AIOps们,你们究竟是在骗谁?

观测观测

AIOPS

全国社保基金理事会副理事长陈文辉一行莅临青藤调研

青藤云安全

技术分享| 探索视频感知编码

anyRTC开发者

音视频 WebRTC 视频编码 视频压缩 视频感知编码

中国AIOps们,你们究竟是在骗谁?

Geek_f56666

云计算 AIOPS 云服务

深入解析 Apache Pulsar 系列(一):客户端消息确认

Apache Pulsar

开源 架构 云原生 Apache Pulsar 消息中间件

阿里云弹性计算年度关键词:强劲、突破、开放

阿里云弹性计算

阿里云 弹性计算 计算巢 神龙架构 无影

SpringBoot:如何优雅地进行参数传递、响应数据封装、异常处理?

CRMEB

手把手教你学Dapr - 6. 发布订阅

MASA技术团队

C# .net 微软 微服务 dapr

手把手教你学Dapr - 8. 绑定

MASA技术团队

C# .net 微软 微服务 dapr

手把手教你学Dapr - 3. 使用Dapr运行第一个.Net程序

MASA技术团队

C# .net 微软 微服务 dapr

手把手教你学Dapr - 4. 服务调用

MASA技术团队

C# .net 微软 微服务 dapr

PK体系“配齐”!亚信科技数据库与麒麟软件OS、飞腾CPU完成产品适配

亚信AntDB数据库

AntDB 亚信科技

【渗透技术】一个渗透测试工具人是怎样操作的

H

网络安全 渗透测试

使用轻量应用服务器部署Docsify在线文档平台

阿里云弹性计算

阿里云 轻量应用 征文投稿

盘点 2021 征文大赛获奖名单公布!

InfoQ写作社区官方

盘点2021 热门活动

详解 HDFS 底层交互原理

五分钟学大数据

hdfs 1月月更

手把手教你学Dapr - 9. 可观测性

MASA技术团队

C# .net 微软 微服务 dapr

项目动态|Apache Pulsar 2.7.4 版本发布

Apache Pulsar

开源 架构 云原生 中间件 Apache Pulsar

如何提高你的写作技巧

坚果

1月月更

详细图解Netty Reactor启动全流程

bin的技术小屋

微服务 网络编程 中间件 Java IO netty

普通开发者,如何成为Apache项目的commiter ?| 人物专访

云智慧AIOps社区

开源 程序员 算法 运维 时序数据

JavaScript 使用 Markdown 制作 PPT

devpoint

markdown 1月月更 slidev

手把手教你学Dapr - 5. 状态管理

MASA技术团队

C# .net 微软 微服务 dapr

『内存中的操作系统』内存虚拟化又是什么

soolaugust

操作系统 内存

C#8.0 可空引用类型

MASA技术团队

C# .net 微软 微服务 项目

从 ClickHouse 到 ByteHouse:实时数据分析场景下的优化实践

字节跳动数据平台

数据库 字节跳动 Clickhouse 实时数据分析 bytehouse

淘宝小部件 Canvas 渲染流程与原理全解析

阿里巴巴终端技术

小程序 淘宝 渲染

Blazor是春天还是寒风里的挣扎

MASA技术团队

C# .net 微软 微服务 blazor

搜狗开源轻量级C++服务器引擎_开源_搜狗架构团队_InfoQ精选文章