1 Star 0 Fork 8

oldyang1983 / ServerFramework

forked from 李志强 / ServerFramework 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

1. 简介

项目介绍:实现了一个基于协程的服务器框架,支持多线程、多协程协同调度;支持以异步处理的方式提高服务器性能;封装了网络相关的模块,包括socket、http、servlet等,支持快速搭建HTTP服务器 详细内容:日志模块,使用宏实现流式输出,支持同步日志与异步日志、自定义日志格式、日志级别、多日志分离等功能。线程模块,封装pthread相关方法,封装常用的锁包括(信号量,读写锁,自旋锁等)。IO协程调度模块,基于ucontext_t实现非对称协程模型,以线程池的方式实现多线程,多协程协同调度,同时依赖epoll实现了事件监听机制。定时器模块,使用最小堆管理定时器,配合IO协程调度模块可以完成基于协程的定时任务调度。hook模块,将同步的系统调用封装成异步操作(accept, recv, send等),配合IO协程调度能够极大的提升服务器性能。Http模块,封装了sokcet常用方法,支持http协议解析,客户端实现连接池发送请求,服务器端实现servlet模式处理客户端请求,支持单Reator多线程,多Reator多线程模式的服务器。

2. 日志模块

  • 详细内容从零开始实现一个C++高性能服务器框架----日志模块
  • 功能
    • 支持不同日志级别
    • 可以自由的控制日志输出的位置(目前包括输出到控制台,文件)
    • 支持自定义日志格式
    • 设置了一系列工具宏,实现流式输出
    • 目前还是同步日志,后期再添加异步日志
  • 主要模块
    • LogEvent、Logger、LogAppender、LogFormatter等

3. 线程模块

  • 详细内容从零开始实现一个C++高性能服务器框架----线程模块
  • 功能
    • 封装了一些常用的锁机制(信号量、互斥锁、自旋锁、读写锁),确保线程安全
    • 对pthread系列函数封装,生成Thread类
  • 主要模块
    • 锁:信号量(SemaphoreLock)、互斥锁(Mutex)、自旋锁(SpinLock)、读写锁(RWMutex)
    • 线程:Thread

4. 协程模块

  • 详细内容从零开始实现一个C++高性能服务器框架----协程模块
  • 功能
    • 使用非对称协程模型,简化程序逻辑
    • 由用户控制协程的执行逻辑,实现了主协程与子协程间的自由切换
    • 每个线程有一个主协程t_threadFiber,由主协程创建子协程,通过call()进入子协程运行,back()退出子协程,返回主协程。
  • 主要模块
    • Fiber

5. 协程调度模块

6. IO协程调度模块

  • 详细内容从零开始实现一个C++高性能服务器框架----IO协程调度模块
  • 功能
    • 继承自Scheduler,重写了tickle和idle方法,解决了线程阻塞,和idle空转的问题
    • 使用epoll系列方法,在协程上实现了IO操作的调度
    • 支持添加,删除IO事件,并完成事件响应
    • 分离了对与fd的监听与IO操作
  • 主要模块
    • IOManager

7. 定时器模块

  • 详细内容从零开始实现一个C++高性能服务器框架----定时器模块
  • 功能
    • 使用最小堆管理定时器
    • 支持循环定时器,执行循环定时任务
    • 支持创建条件定时器,定时器触发与否依赖于绑定的条件
    • 配合IO协程调度模块可以完成基于协程的定时任务调度
  • 主要模块
    • Timer、TimerManager

8. Hook模块

9. Socket模块

10. Stream模块

11. TcpServer模块

  • 详细内容从零开始实现一个C++高性能服务器框架----TcpServer模块
  • 功能
    • 负责Tcp服务端的相关工作,包括监听,处理客户端响应,设置超时时间等
    • 和三个IO协程调度器绑定,能够实现监听,处理客户端读写,处理业务逻辑的分离
    • 充当监听池,负责所有监听socket的监听工作
  • 主要模块 TcpServer

12. Http模块

  • 详细内容从零开始实现一个C++高性能服务器框架----Http模块
  • 功能
    • 封装了HTTP请求和响应协议(HttpRequestHttpResponse
    • 使用nodejs的htpp_parser实现了HTTP请求、响应解析(HttpRequestParserHttpResponseParser
    • 实现了uri解析(Uri
    • 封装了HTTP会话,负责服务器接收请求和发送响应(HttpSession
    • 封装了用于HTTP服务器的相关方法(HttpServer
    • 封装了客户端发送请求和接收响应及HTTP连接池(HttpConnectionHttpConnectionPool
  • 主要模块
    • HttpRequest、HttpResponse、HttpRequestParser、HttpResponseParser、Uri、HttpSession、HttpServer、HttpConnection、HttpConnectionPool

13. Servlet模块

14. 守护进程

空文件

简介

实现了一个基于协程的服务器框架,支持多线程、多协程协同调度;支持以异步处理的方式提高服务器性能;封装了网络相关的模块,包括socket、http、servlet等,支持快速搭建HTTP服务器或WebSokcet服务器。 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
C++
1
https://gitee.com/oldyang1983/server-framework.git
git@gitee.com:oldyang1983/server-framework.git
oldyang1983
server-framework
ServerFramework
master

搜索帮助