SkillAgentSearch skills...

Gyanis

Gyanis 是一个轻量级、模块化的 C++ 高性能服务器框架,专为高并发网络服务设计。框架采用 Boost.Coroutine2 的协程架构,支持多线程任务调度和全链路异步 I/O,提供高效、类型安全的 API。其核心模块包括智能日志系统、动态配置中心、协程调度引擎、网络协议栈和异步化基础设施,支持高性能 HTTP/1.1 解析(QPS 超 5W)、零拷贝设计和模块化组合。适用于 Web 服务、分布式系统、实时通信、游戏服务器和 IoT 场景

Install / Use

/learn @Gyanis9/Gyanis
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Gyanis:C++ 高性能服务器框架

License

一款面向现代云计算场景的轻量级 C++ 服务器框架,通过协程调度与异步 I/O 深度整合,提供高性能网络编程基础设施。

🚀 核心特性

  • 协程架构:基于 Boost.Coroutine2 的 N-M 协程调度模型,支持多线程任务调度。
  • 异步生态:全链路 Hook 系统调用,实现同步编码的异步性能。
  • 模块化设计:4 个解耦模块,支持按需组合。
  • 高性能 HTTP:基于 Ragel 的 HTTP/1.1 协议解析,性能媲美手写汇编。
  • 零成本抽象:利用 C++17 特性实现高效、类型安全的 API。
  • 动态库加载:支持在运行时加载 .so 共享库,从而提高系统的扩展性,实现业务层与系统层的解耦。

🧩 架构概览

Gyanis 框架架构

框架分三层设计:

  1. 系统抽象层:协程调度器、异步 Hook。
  2. 协议处理层:TCP/HTTP 核心协议栈、流抽象。
  3. 服务构建层: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

🛠 设计理念

  1. 约定优于配置:通过类型推导和智能默认值降低使用成本。
  2. 零拷贝设计:关键路径避免内存复制,提升吞吐量。
  3. 分层抽象:从协程调度到 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

View on GitHub
GitHub Stars5
CategoryDevelopment
Updated3mo ago
Forks2

Languages

C++

Security Score

67/100

Audited on Dec 28, 2025

No findings