CuBer 是一个高并发的 HTTP 服务器,支持解析 HTTP get、head、post 请求,能够响应静态资源的请求,且支持反向代理,能够将动态内容请求转发到其他 web 服务器(如 uwsgi)。 CuBer 由 C++11 编写,采用 Reactor 事件处理模式高效处理非阻塞 IO, 并使用多线程提高并发能力。
Cuber 具备以下特性:
- Reactor 事件处理模式高效处理非阻塞 IO
- 多线程并发,充分利用多核处理器
- 支持 HTTP GET/HEAD method 以及 POST method(目前仅支持解析 identity-body,不支持 chuncked-body)
- 支持 HTTP 短连接及 HTTP 长连接
- 支持静态资源访问
- 支持 HTTP 反向代理(可连接 Django 等 web 后端)
- 高效定时器。自动清除超时长连接
- 高效异步文件日志,可记录 HTTP 访问记录及 error 信息
- yaml 文件进行配置
- 支持同时配置多个监听端口
-
HTTP 长连接
-
压力测试
-
测试环境
- 云服务器单机测试
- 8vCPUs | Intel Cascade Lake 3.0GHz
- 16GB 内存
- 测试工具: Apache Bench (ab)
- 详细配置信息参见: pressure test info
-
CuBer 压力测试结果
-
CuBer、Nginx 的 Http 短连接压测结果
-
-
Django 后端示例代码
-
测试代码: MakingL/CuberBackendApp
-
运行结果:
-
-
Dockerfile 构建
- 在当前目录下(
CuBer/
目录), 运行docker build ./
构建 docker 镜像 - 运行构建好的 docker 镜像
- 在当前目录下(
-
环境
- Linux kernel version >= 2.6.28
- cmake2.6 及以上版本
- GCC >= 4.7
-
安装编译工具
sudo yum install make cmake gcc gcc-c++
-
构建编译
cmake ./
make
-
按需求修改配置文件,示例配置文件为
conf/cuber_full.yaml
-
运行 CuBer
./bin/CuBer -c conf/cuber.yaml
(其中的conf/cuber.yaml
按照需求自行替换)