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

ssxrver是一个基于C++17的高性能、高并发Linux网络库,支持TCP和UDP。它采用one-loop-per-thread+thread-pool模型,优化了事件分发和数据读写。亮点包括使用RAII管理对象生命周期、非阻塞套接字、HTTP服务器模块、sendfile技术以及数据库操作。此外,ssxrver还实现了多缓冲区异步日志库和细粒度锁的线程池。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 v
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Randy__Lambert

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

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

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

打赏作者

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

抵扣说明:

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

余额充值