基于 linux epoll 技术的轻量级的 C++ 通讯框架。
EveServer 根目录,运行 make 指令,会在根目录生成 EveServer 可执行文件,直接运行即可。
- _include:存放所有的头文件代码。易于管理和方便 makefile 的编写。
- doc:软件架构说明。
- app:存放主程序代码文件。
- logic:存放业务逻辑代码文件。
- misc:存放其他代码文件,包括连接池、CRC32校验。
- net:存放基于 socket 的网络库代码文件,整个项目的核心。
- proc:存放进程相关的代码文件。
- signal:存放信号相关的代码文件。
- test:存放相关功能单元测试代码文件。
在doc目录下的软件架构图.jpg)
- 非常完整的多进程多线程高并发服务器项目。
- 按照包头 + 包体格式,完美地解决了数据粘包的问题。
- 根据收到的数据包来执行不同的业务逻辑。
- 把业务处理产生的结果数据包正确地返回给客户端。
- 采用一个 master 进程,多个 worker 进程的框架.
- epoll 高并发通讯技术,用的是水平触发模式【LT】。
- 采用线程池技术处理业务逻辑,极大的提高数据的吞吐率。
- 采用含有嵌入式指针的内存池技术,提高程序运行效率、节约内存并防止大量内存碎片的产生。
- 采用连接池技术,并使用延迟回收技术,防止未知异常的发生。
- 采用内存池技术,提高常用的结构体内存的申请和释放的效率。
- 采用线程之间的同步技术包括互斥量、信号量等等。
- 采用线程池条件队列技术,解决线程池惊群问题。
- 采用 C++11 及以上标准。
- Google C++ 编程风格。
- epoll_wait() 的 accept 存在惊群问题。
- 没有使 server 正常结束功能。
- 梳理 server 结束时的各个部分释放内存的顺序。
- 更改协议格式,由结构体转变为 Google Protobuf 。
- 消息头、包头和包体中需要添加各自的版本号。