推出高性能HTTP服务器Sogou C++服务器引擎
- 时间:
- 浏览:0
9月3日,搜狗正式发布了开源C++服务器引擎“搜狗C++Workflow”。目前,Workflow支持搜狗几乎所有的后端C++在线服务,包括所有的搜索服务、云录入方式、在线广告等,每天处理数百亿的请求,引擎一发布,就在GitHub上引起了众多开发者的关注。该引擎不仅实现了高性能、轻量化的着陆,而且还创新地引入了任务流的概念,实现了计算和通信任务的集成和协调调度。基于Workflow引擎,开发人员可以轻松实现复杂的业务逻辑,进一步满足高并发、高性能C++服务器程序的开发需求。如果你在GitHub上搜索Sogou C++ Workflow,你会找到一个项目。轻量级,高性能,Sogou C++ Workflow帮助企业降低成本,提高效率Workflow在设计之初就保持了两个核心概念:高性能和轻量级。长期以来,业界的服务器性能优化都集中在如何使CPU完全运行,以及如何使网络请求独立、快速地响应。这一次,在线Sogou Workflow专注于如何在特定的调度程序中管理各种网络资源,并尽可能完整地调度。
另一方面,集成多通信计算资源的解决方案将进一步提高工作流引擎的性能。到目前为止,当开发人员选择高吞吐量网络框架时,他们不得不面对不同比例的计算资源来划分不同大小的线程池。然而,每种计算的特定资源需求的比例是动态变化的,重要性也不同,后端响应时间也会动态变化。得益于工作流,C++服务器引擎可以像Go语言一样实现网络资源的异步调度,从而进一步释放计算、磁盘和其他资源。
任务流概念的引入是搜狗工作流引擎的另一个亮点。工作流高度封装了资源,用户将无法访问连接池、线程池、想要aio的文件fd以及各种异步通知机制。这意味着在开发阶段,开发人员只需了解业务关系,而不是内部细节,就可以实现自己的复杂业务逻辑。开发人员可以使用工作流来构建自己的业务逻辑,无论是动态的还是静态的。您可以将不同类型的任务序列化和并行化,如下图所示。
除了各种创新设计外,Workflow还提供了比其他C++框架更用户友好的体验。在过去,很多企业自主构建的服务器平台,从设计之初就没有考虑到多平台、多协议的支持,一旦出现新的需求,开发人员就不得不用定制框架等来解决这个问题。Workflow原生实现了HTTP、Redis、MySQL和Kafka等协议,您可以直接作为这些协议的客户端使用。在此基础上,开发了与brpc和thrift的互操作性,IDL对protobuf和thrift的支持,http+json和IDL的跨语言化,以及更易于使用的Sogou RPC,在不久的将来,Sogou RPC项目将开源。HTTP服务器性能:Sogou C++Workflow VS nginx,为了充分体现工作流在brpc性能上的优势,Sogou还提供了工作流和nginx、brpc两个比较主流的知名系统,以及HTTP服务器性能对比、测试环境:最基本的测试场景如下所示:Wrk或Wrk2可以运行客户端,单服务器,长连接,CPU。40核E5-2630v4@2.20GHz,内存192GB,网卡:25,000Mb/snginx包含进程数(与核心数一致)auto,brpc包含40个nthreads,workflow包含16个poller线程和20个handler线程。测试1不同并发次数对QPS的影响(越高越好)
结论:随着并发推送测试次数的增加,服务器的QPS也会增加。无论Workflow是低并行数还是高并行数,QPS仍然高于nginx或brpc,特别是在优点大于128的并行数的情况下,小数据包的Workflow基本上可以保证50W QPS,这说明网络资源的高并行调度做了很多优化。测试2不同的数据大小对QPS的影响越大越好。
结论:这里的返回数据包大小是HTTP请求的主体大小,QPS随着返回数据包的增大而减小。我们希望QPS尽可能保持稳定,并确保它不会下降得太快。Workflow的性能在并发性方面优于其他两个系统,并且在网络发送和接收以及其他调用之间的调度方面有更好的协调。测试3:固定QPS下的延迟分布图(左越好,直越好)
结论:该测试是由wrk2在固定的QPS下测量的,其中1%的长尾请求是Outiler,长尾请求不计入结果。模拟的重点是检查正常的请求是否得到及时的处理。由于nginx在其他测试中表现稍差,因此没有进行CDF比较。工作流的延迟在不同比例的分布中较低,最慢的(0.99-1.00)延迟增加也相对较慢,这说明工作流更适合长尾。通过对比,我们可以看到,工作流在核心性能上实际上有着自己的优势。对于很多开发者来说,未来会有选择,遇到合适的应用场景,工作流程无疑会帮助开发者大大提高开发效率,确保项目的成功。开源核心技术的“硬核”服务器引擎,像Sogou开源在开发者生态系统的前沿是罕见的。许多科技公司花费了大量精力来保守自己的产品和技术,而核心算法也是保密的。近几年来,狗走上了与普通大众相反的道路。除了工作流程,Sogou还开源了核心技术和工具,如机器阅读工具SMRC和内部项目管理系统Cynthia。事实上,搜狗通过核心技术的持续开源,通过坚持和理解开源社区文化,推动企业自身的技术进步,吸引更多优秀的开发者,不断为相关产品的后续开发提供技术营养和创造力。要想在日益激烈的互联网市场中获得话语权,就必须积极制定标准,始终站在开发者生态系统的前沿,建立可持续的竞争优势,确保产品被更多用户所喜爱和使用。在未来的开源道路上,搜狗将继续开放相关先进技术,充分发挥专业能力和实力,推动开源运动的进一步普及。