MoonNet
____ ,--.
,' , `. ,--.'| ___
,-+-,.' _ |,--,::|,--.'|_
,-+-. ; ,||,---. ,---. ,---,,`--.'`| ':||:,'
,--.'|' | ;| ' ,'\ ','\ ,-+-. / | | : : | | : : ':||,', | ': / / | / / |,--.'|' |:| \ |:,---. .;__,' /
|| / |||| . ; ,.: . ; ,.:||,"' ||: ' '; | / \ |||
' |:|:|, ' ||:: ' ||::|| / || ' ' ;. ; / / |:__,'|:; . | ; |--' ' | .;: ' | .; :|||||||| \ | . ' / | ' :|__
|:||,|:||:|||||/ ' :| ; .' ' ; /||| '.'||: ' |/ \ \ / \ \ / |||--' | | '`--' ' | / | ;: ;
; | |`-' `----' `----' | |/ ':||:||, /
| ;/ '---' ; |.' \ \ / ---`-'
'---' '---' `----'
🌙 MoonNet 简介
MoonNet 是一个专注于基于 Reactor 模型的高性能服务端网络库。它采用主从 Reactor 多线程模型,结合并实践了 one loop one thread 的设计理念,充分利用 Linux 的 epoll 机制,实现了高效、可扩展的网络通信能力。MoonNet 支持 TCP 和 UDP 协议,并内置信号处理和定时器功能,适用于构建高并发、低延迟的服务器应用。
🌟 主要特性
高性能:基于 epoll 的事件驱动模型,能够轻松处理数万级别的并发连接。
多线程:采用主从 Reactor 模式,通过线程池管理多个事件循环,充分利用多核 CPU 的性能。
丰富的事件类型:支持 TCP、UDP、定时器 和 信号 等多种事件,满足多样化的网络应用需求。
易于使用:简洁明了的接口设计,降低上手难度,方便集成到各种项目中。
负载均衡:提供静态和动态负载均衡方案,优化资源分配,提高系统吞吐量。
模块化设计:各个组件独立且可扩展,便于定制和功能扩展。
🚀 快速开始
📦 安装
克隆仓库:
git clone https://github.com/MoonforDream/MoonNet.git
cd MoonNet
mkdir build &&cd build
cmake ..make# 安装sudomakeinstall# 清理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
版权归原作者 Moon也爱算法呀 所有, 如有侵权,请联系我们删除。