一、项目背景/介绍
介绍要点
what:你做了什么工作?
why:这个工作的目的是什么?
when:这个工作发生在什么时候?
who:由谁参与了这个工作?
where:在哪里开展的工作?你在什么情境下做的工作?
How:你如何做这个工作?结果怎么样?
为了加深对服务器后端开发以及http协议的理解(why),在2020年4月到2020年6月两个月时间(when),我自己在学习了Tinyhttpd源码后在linux环境下扩展了Tinyhttpd(how)增加了基于epoll事件驱动的I/O,采用高效的线程池代替之前一个请求创建一个线程的方法进行客户端连接任务管理,父进程创建子进程使用动态请求解析技术Cgi来支持Get与Post请求。压力测试结果表明,可以支持高并发http请求。
主要模块:处理连接请求模块;接收客户端连接模块;线程池模块;SocketAPI 模块。
二、主要技术
- epoll I/O复用技术/阻塞/非阻塞
- 动态请求解析技术Cgi
- Reactor模式
- 线程池
- Socket网络编程相关知识
- http报文格式
- http请求命令get/post
- 进程通信
三、项目遇到问题总结
- 是否有做得不足的