关于个人开源网络库MoonNet

MoonNet

yaml 复制代码
          ____                                               ,--.
        ,'  , `.                                           ,--.'|                ___
     ,-+-,.' _ |                                       ,--,:  : |              ,--.'|_
  ,-+-. ;   , ||    ,---.      ,---.         ,---,  ,`--.'`|  ' :              |  | :,'
 ,--.'|'   |  ;|   '   ,'\    '   ,'\    ,-+-. /  | |   :  :  | |              :  : ' :
|   |  ,', |  ':  /   /   |  /   /   |  ,--.'|'   | :   |   \ | :    ,---.   .;__,'  /
|   | /  | |  || .   ; ,. : .   ; ,. : |   |  ,"' | |   : '  '; |   /     \  |  |   |
'   | :  | :  |, '   | |: : '   | |: : |   | /  | | '   ' ;.    ;  /    /  | :__,'| :
;   . |  ; |--'  '   | .; : '   | .; : |   | |  | | |   | | \   | .    ' / |   '  : |__
|   : |  | ,     |   :    | |   :    | |   | |  |/  '   : |  ; .' '   ;   /|   |  | '.'|
|   : '  |/       \   \  /   \   \  /  |   | |--'   |   | '`--'   '   |  / |   ;  :    ;
;   | |`-'         `----'     `----'   |   |/       '   : |       |   :    |   |  ,   /
|   ;/                                 '---'        ;   |.'        \   \  /     ---`-'
'---'                                               '---'           `----'

🌙 引言

作为一名热衷于C++开发的程序员,造轮子不仅是常态,更是提升自身技能和满足技术好奇心的重要途径。在众多高性能网络库中,我选择了亲自实现一个适合自己开发习惯的高性能网络库------MoonNet。通过开发 MoonNet,我不仅能更好地理解网络编程的核心原理,还能在实际项目中灵活应用,享受自我实现的成就感。因此,我决定将 MoonNet 开源,与广大开发者分享,并期待与志同道合的朋友们共同完善这一项目。如果感兴趣可以给我给个star✨,仓库地址见相关资源


🌙 MoonNet 简介

MoonNet 是一个专注于基于 Reactor 模型的高性能服务端网络库。它采用主从 Reactor 多线程模型,结合并实践了 one loop one thread 的设计理念,充分利用 Linux 的 epoll 机制,实现了高效、可扩展的网络通信能力。MoonNet 支持 TCP 和 UDP 协议,并内置信号处理和定时器功能,适用于构建高并发、低延迟的服务器应用。


🌟 主要特性

高性能:基于 epoll 的事件驱动模型,能够轻松处理数万级别的并发连接。

多线程:采用主从 Reactor 模式,通过线程池管理多个事件循环,充分利用多核 CPU 的性能。

丰富的事件类型:支持 TCP、UDP、定时器 和 信号 等多种事件,满足多样化的网络应用需求。

易于使用:简洁明了的接口设计,降低上手难度,方便集成到各种项目中。

负载均衡:提供静态和动态负载均衡方案,优化资源分配,提高系统吞吐量。

模块化设计:各个组件独立且可扩展,便于定制和功能扩展。


🚀 快速开始

📦 安装

克隆仓库:

bash 复制代码
git clone https://github.com/MoonforDream/MoonNet.git
cd MoonNet
mkdir build && cd build
cmake ..
make
# 安装
sudo make install
# 清理build等文件(可选)
make clean-all

📋 代码规范

代码风格:遵循一致的代码风格,推荐使用 clang-format 进行格式化。

文档:为新增功能添加相应的文档说明,确保其他开发者能够理解和使用。

测试:确保代码的稳定性,添加必要的单元测试覆盖新功能。


📜 更新日志
v1.0.0:

初始发布:MoonNet 网络库首次发布,支持基于 Reactor 模型的 TCP 和 UDP 事件处理,封装主从 Reactor 多线程服务端模块。

核心功能

  • 事件循环 (eventloop) 和事件处理 (event) 实现。
  • 多线程支持:通过 loopthread 和 looptpool 管理多个事件循环。
  • TCP 连接管理:基于 bfevent 的缓冲事件处理。
  • UDP 支持:提供 udpevent 进行数据接收和发送。
  • 定时器事件处理:通过 timerevent 实现定时任务。
  • 信号事件处理:使用 signalevent 捕获和处理系统信号。
  • 静态/动态负载均衡。

工具类

  • 缓冲区管理 (buffer):实现高效数据读写。
  • 任务线程池 (Threadpool)。
  • 平台无关的套接字操作封装 (wrap)。

服务器框架

  • server 类:集成所有组件,简化服务器搭建流程。

日后计划

  • 主从 Reactor 多进程支持:包括进程通信等封装。
  • HTTP/HTTPS 支持。
  • 内置内存池:优化动态申请内存的性能。
  • 数据库连接池支持:包括 MySQL、Redis 等数据库的连接池。
  • 内置异步日志库。
  • TCP 长连接支持:包括 Keep-Alive 和应用层心跳检测。
  • 高负载时的拒绝策略。
  • 更多功能待开发...

📢 联系我们

如果您有任何问题、建议或想要贡献代码,欢迎通过以下方式与我们联系:

GitHub Issues:https://github.com/MoonforDream/MoonNet/issues

邮件:moondream2144@gmail.com

即时通讯:如果感兴趣的人多,会考虑建群和社区进行交流

让我们一起打造一个高性能、稳定且易用的网络库!


🔗 相关资源

仓库地址:https://github.com/MoonforDream/MoonNet

使用文档:英文版 中文版

示例代码:https://github.com/MoonforDream/MoonNet/tree/master/example

相关推荐
Code out the future几秒前
【C++——临时对象,const T&】
开发语言·c++
Stark、4 分钟前
【Linux】文件IO--fcntl/lseek/阻塞与非阻塞/文件偏移
linux·运维·服务器·c语言·后端
小华同学ai4 分钟前
ShowDoc:Star12.3k,福利项目,个人小团队的在线文档“简单、易用、轻量化”还专门针对API文档、技术文档做了优化
前端·程序员·github
sam-zy20 分钟前
MFC用List Control 和Picture控件实现界面切换效果
c++·mfc
aaasssdddd9641 分钟前
C++的封装(十四):《设计模式》这本书
数据结构·c++·设计模式
发呆小天才O.oᯅ1 小时前
YOLOv8目标检测——详细记录使用OpenCV的DNN模块进行推理部署C++实现
c++·图像处理·人工智能·opencv·yolo·目标检测·dnn
新手上路狂踩坑1 小时前
Android Studio的笔记--BusyBox相关
android·linux·笔记·android studio·busybox
qincjun2 小时前
文件I/O操作:C++
开发语言·c++
星语心愿.2 小时前
D4——贪心练习
c++·算法·贪心算法
fnd_LN2 小时前
Linux文件目录 --- 复制命令CP、递归复制目录、软连接、硬链接
linux·运维·服务器