高性能高并发网络库 ssxrver 介绍

ssxrver

github地址: https://github.com/RandyLambert/ssxrver

     _______.     _______.___   ___ .______     ____    ____  _______ .______      
    /       |    /       |\  \ /  / |   _  \    \   \  /   / |   ____||   _  \     
   |   (----`   |   (----` \  V  /  |  |_)  |    \   \/   /  |  |__   |  |_)  |    
    \   \        \   \      >   <   |      /      \      /   |   __|  |      /     
.----)   |   .----)   |    /  .  \  |  |\  \----.  \    /    |  |____ |  |\  \----.
|_______/    |_______/    /__/ \__\ | _| `._____|   \__/     |_______|| _| `._____|

ssxrver 是一个运行于 Linux 平台下的高性能高并发网络库,使用 C++17 进行编写,支持 TCP 和UDP 协议。

优势

  1. 使用了优化版 one-loop-per-thread + 细粒度锁 thread-pool 模型.
  2. 高性能高并发,压测数据高于 Nginx/1.14.2 与 Apache/2.4.28
  3. 主线程只进行 accept 操作通过 eventfd 进行事件分发,避免锁的竞争,IO 线程进行数据读写.
  4. 根据在不同场景下的分析,使用 epoll 的不同的多路复用方式,提高性能.
  5. 使用 RAII 的机制进行对象生命周期控制,所有内存分配操作使用智能指针,避免了内存泄露.
  6. 使用 Linux 内核提供的 timerfd 将定时事件和 IO 时间统一处理, 通过 C++11 标准库 std::chrono 和 std::priority_queue 实现定时器管理,实现纳秒级别定时任务.
  7. 使用非阻塞套接字,避免线程被单个连接阻塞.
  8. 封装 http 模块,简单操作就可配置出一个高性能 HTTP Server,采用 Ragel (有限状态机)进行 HTTP 请求解析,调高效率,支持 HTTP/1.0 , HTTP/1.1 的 GET、POST 请求,支持长连接.
  9. 封装高性能 buffer 类进行数据发送和接收.
  10. 文件发送使用 sendfile 零拷贝技术,提高文件发送性能.
  11. 封装数据库操作模块,可简单解析生成 MySQL 数据库对应 sql 语句,可配合细粒度锁 thread-pool 实现数据库连接池.
  12. 实现多缓冲区异步日志库,支持设立日志级别,日志滚动大小等功能.
  13. 使用 std::make_shared , std::make_unique , std:string_view , explicit , [[nodiscard]] , emplace_back 等 C++11 14 17语法新特性,提高性能.
  14. 使用统一风格的代码风格和命名规范,同时添加 10 余个编译参数来规范代码实现,提高代码质量和编译器优化可能性.
  15. 多处设计进行对象复用,减少某些对象频繁申请释放.
  16. 使用基于对象的编程思想,项目代码结构清晰明白,互相调用频繁的函数尽量放在一起,增加 CPU Cache命中率,模块之间松耦合,极易添加新功能模块.
  17. 使用单例模式,策略模式,适配器模式等设计模式,降低代码冗杂度,使实现代码实现更加优雅.
  18. 封装配置文件模块,使用 json 格式来快速进行配置.
  19. 可以通过配置文件来配置 CPU 亲和度,从而减少线程直接上下文切换次数,提高性能.
  20. 支持 UDP 协议.

开发环境

  • 操作系统发型版本 : deepin v20.1 社区版(1030)
  • 内核版本 : 5.4.70-amd64-desktop (64位)
  • 编译器版本 : gcc 8.3
  • 语言 : c++ 17
  • cmake版本 : 3.11.2
  • boost库版本 : 1.72
  • 数据库版本 : MySQL 5.7.21-1

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Randy__Lambert

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值