/spigeon

服务器网络编程框架

Primary LanguageC++

spigeon

一个 C/C++ 轻量级服务器异步网络编程框架, 追求更简洁的实现

基本架构

                      +---------------------+
                      |    GenericServer    |
                      +---------------------+
                      +---------------------+
                      |  GenericDispatcher  |
                      +---------------------+
                      /          |           \
+--------------------+ +-------------------+ +-------------------+
|   GenericWorker    | |   GenericWorker   | |   GenericWorker   |
+--------------------+ +-------------------+ +-------------------+
                       +-------------------+
                       |   NetworkManager  |
                       +-------------------+
                       +-------------------+
                       |     Connection    |
                       +-------------------+
                       +-------------------+
                       |       Socket      |
                       +-------------------+
                       +-------------------+
                       |       libev       |
                       +-------------------+

特性

  • 两种不同的服务框架模型 message-pipecommand-unix, 开发者可自由选择
  • 支持 TCP 并发服务编程
  • 支持 UDP 并发服务编程
  • 支持 HTTP 客户端编程
  • 支持百度 mcpack 私有协议, HTTP 协议
  • 使用 pipe 进行线程间同步
  • libev 事件驱动模型
  • 强大的异步日志系统
  • 完善的配置文件系统
  • 支持多种锁, 如读写锁、互斥锁
  • 无锁队列
  • 更高性能的 jemalloc 内存管理

开发历程

spigeon v1.0

  • v1.0, 2019-01-17, 为满足 zrtc 的需求, 开始优化 store-framework
  • v1.0, 2019-09-11, 从代码的布局、逻辑以及底层库的服务角度完成第一次精简和优化
  • v1.0, 2019-09-18, 增加基础 UDP 服务模型
  • v1.0, 2019-09-26, 底层网络层 Socket 抽象完成, 1.0 整体架构调整完成
  • v1.0, 2019-10-29, 开始加入 gsdm 模型
  • v1.0, 2020-01-10, 支持 worker 线程的 cpu 亲和性绑定

构建

./build.sh

使用

参考 examples/demo

作者

yujitaiyujitai@zuoyebang.com