推荐非常强大的高性能 C++ 服务器引擎!

Posted 架构师必备

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了推荐非常强大的高性能 C++ 服务器引擎!相关的知识,希望对你有一定的参考价值。

搜狗公司C++服务器引擎,支撑搜狗几乎所有后端C++在线服务,包括所有搜索服务,云输入法,在线广告等,每日处理超百亿请求。这是一个设计轻盈优雅的企业级程序引擎,可以满足大多数C++后端开发需求。

你可以用来:

  • 快速搭建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就是以它为基础,作为独立项目开源。支持srpcbrpcthrift等协议。

  • 构建异步任务流,支持常用的串并联,也支持更加复杂的DAG结构。

  • 作为并行计算工具使用。除了网络任务,我们也包含计算任务的调度。所有类型的任务都可以放入同一个流中。

  • Linux系统下作为文件异步IO工具使用,性能超过任何标准调用。磁盘IO也是一种任务。

  • 实现任何计算与通讯关系非常复杂的高性能高并发的后端服务。

  • 构建微服务系统。

  • 项目内置服务治理与负载均衡等功能。

系统设计特点

我们认为,一个典型的后端程序由三个部分组成,并且完全独立开发。即:程序=协议+算法+任务流。

基础任务,任务工厂与复合任务

  • 我们系统中包含六种基础任务:通讯,文件IO,CPU,GPU,定时器,计数器。

  • 一切任务都由任务工厂产生,并且在callback之后自动回收。

  • server任务是一种特殊的通讯任务,由框架调用任务工厂产生,通过process函数交给用户。

  • 大多数情况下,用户通过任务工厂产生的任务,都是一个复合任务,但用户并不感知。

异步性和基于``C++11 std::function``的封装
  • 不是基于用户态协程。使用者需要知道自己在写异步程序。

  • 一切调用都是异步执行,几乎不存在占着线程等待的操作。

  • 虽然我们也提供一些便利的半同步接口,但并不是核心的功能。

内存回收机制

  • 任何任务都会在callback之后被自动内存回收。如果创建的任务不想运行,则需要通过dismiss方法释放。

  • 任务中的数据,例如网络请求的resp,也会随着任务被回收。此时用户可通过std::move()把需要的数据移走。

项目地址


以上是关于推荐非常强大的高性能 C++ 服务器引擎!的主要内容,如果未能解决你的问题,请参考以下文章

对比Python,虽然C++很牛逼,但真的很难啊!

Spring Boot 整合模板引擎 Freemakerthymeleaf

4K Star,一款高性能 C++ 服务器引擎

swoolefy PHP的异步并行高性能网络通信引擎内置了Http/WebSocket服务器端/客户端

更新:C++ 指针片段

C++ 源码开源