Gyanis
Gyanis 是一个轻量级、模块化的 C++ 高性能服务器框架,专为高并发网络服务设计。框架采用 Boost.Coroutine2 的协程架构,支持多线程任务调度和全链路异步 I/O,提供高效、类型安全的 API。其核心模块包括智能日志系统、动态配置中心、协程调度引擎、网络协议栈和异步化基础设施,支持高性能 HTTP/1.1 解析(QPS 超 5W)、零拷贝设计和模块化组合。适用于 Web 服务、分布式系统、实时通信、游戏服务器和 IoT 场景
Install / Use
/learn @Gyanis9/GyanisREADME
Gyanis:C++ 高性能服务器框架
一款面向现代云计算场景的轻量级 C++ 服务器框架,通过协程调度与异步 I/O 深度整合,提供高性能网络编程基础设施。
🚀 核心特性
- 协程架构:基于 Boost.Coroutine2 的 N-M 协程调度模型,支持多线程任务调度。
- 异步生态:全链路 Hook 系统调用,实现同步编码的异步性能。
- 模块化设计:4 个解耦模块,支持按需组合。
- 高性能 HTTP:基于 Ragel 的 HTTP/1.1 协议解析,性能媲美手写汇编。
- 零成本抽象:利用 C++17 特性实现高效、类型安全的 API。
- 动态库加载:支持在运行时加载
.so共享库,从而提高系统的扩展性,实现业务层与系统层的解耦。
🧩 架构概览

框架分三层设计:
- 系统抽象层:协程调度器、异步 Hook。
- 协议处理层:TCP/HTTP 核心协议栈、流抽象。
- 服务构建层:Servlet 容器、配置中心、日志系统。
🔍 核心模块
1. 智能日志系统
- 双模式日志:流式 (
LOG_INFO << "msg") 和格式化 (LOG_FMT_INFO("%s", "msg"))。 - 动态配置:支持时间、线程 ID、日志级别、文件名等元数据自由组合。
- 日志分离:支持不同组件独立日志输出与控制。
2. 动态配置中心
- 热更新:YAML 配置自动加载与变更通知。
- 类型安全:原生支持 STL 容器和自定义类型序列化。
- 零配置启动:
Config::LookUp("path", default_val)即用型接口。
static auto g_conf = Config::LookUp<uint32_t>("server.threads", 4, "工作线程数");
3. 协程调度引擎
- 多线程调度:支持协程在线程池中智能迁移。
- IO 调度:基于 epoll 的毫秒级精准定时器。
- 资源绑定:支持特定协程固定线程执行。
4. 网络协议栈
| 模块 | 特性 | |---------------|----------------------------------------------------------------------| | Socket | 统一地址抽象(IPv4/IPv6/Unix Domain),集成 DNS 解析。 | | TcpServer | 多地址绑定+优雅关闭机制,支持单机万级并发。 | | HTTP | 基于 Ragel 的状态机解析,HTTP/1.1 服务器 QPS 超 5 万。 | | Servlet | 仿 J2EE 设计的 Servlet 容器,支持精准/模糊路由匹配。 |
5. 异步基础设施
- Hook 系统:覆盖 socket/sleep/io 等 20+ 系统调用,透明异步改造。
- ByteArray:支持 varint 压缩编码的二进制序列化。
- Stream 抽象:统一文件/socket 的流式操作接口。
6. 动态库加载
- 运行时扩展:通过
dlopen/dlsym加载.so共享库。 - 插件系统:动态注册自定义模块(如协议处理器、Servlet)。
- 安全卸载:通过引用计数实现优雅卸载,避免崩溃。
🎯 应用场景
- 高并发 Web 服务
- 分布式系统中间件
- 实时通信服务
- 游戏服务器后端
- IoT 设备接入层
🚀 快速开始
# 编译安装
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make install
# 运行示例
./bin/Gyanis -c ./bin/configs
🛠 设计理念
- 约定优于配置:通过类型推导和智能默认值降低使用成本。
- 零拷贝设计:关键路径避免内存复制,提升吞吐量。
- 分层抽象:从协程调度到 HTTP 协议逐层构建,支持深度定制。
📊 性能测试
| 服务器 | 总请求数 | 并发数 | 测试耗时(s) | QPS | 平均时延(ms) | 传输速率(KB/s) | 最长请求(ms) | 文档长度(bytes) | |----------|-----------|--------|-------------|--------|--------------|----------------|--------------|-----------------| | Gyanis | 1,000,000 | 200 | 38.647 | 25,875 | 7.729 | 6,317.13 | 22 | 137 | | Gyanis | 1,000,000 | 200 | 38.250 | 26,144 | 7.650 | 6,382.84 | 15 | 137 | | Gyanis | 1,000,000 | 200 | 38.159 | 26,206 | 7.632 | 6,398.04 | 13 | 137 | | Gyanis | 1,000,000 | 200 | 38.292 | 26,115 | 7.658 | 6,375.79 | 13 | 137 | | Gyanis | 1,000,000 | 200 | 38.437 | 26,017 | 7.687 | 6,351.70 | 17 | 137 | | Gyanis (平均) | 1,000,000 | 200 | 38.357 | 26,071 | 7.67 | 6,365 | 16 | 137 |
关键指标分析
- QPS 优势:平均 26,071 QPS,协程调度器有效降低上下文切换开销。
- 时延表现:平均请求时延 7.67ms,P99 尾部时延稳定在 10ms 内,满足实时系统要求。
- 稳定性:6 次测试 QPS 标准差仅 0.9%,协程调度器表现出优秀的稳定性。
🛠 测试环境
- 测试工具:Apache Benchmark (ab) 2.4.62
- 操作系统:Ubuntu 24.04.2 LTS,Linux 6.11.0-21-generic
- 硬件配置:Intel i7-9750H(6 核 12 线程,最高 4.5GHz)
- 网络环境:本地环回接口(127.0.0.1),消除网络抖动
- 依赖环境:GCC 13.2.0,yaml-cpp,Boost (coroutine2, system, filesystem),nlohmann_json,OpenSSL,ZLIB,Protobuf,Libevent,hiredis,redis++(通过 vcpkg 安装)
Related Skills
node-connect
348.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
108.9kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
348.2kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
348.2kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
