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