脚本宝典收集整理的这篇文章主要介绍了TinyWeb--C++构建高性能Web服务器,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
C++构建高性能Web服务器——Step 0:前言@H_126_3@
一、想法:
- 一直想用C++做个项目,因为比较喜欢网络通信这部分,又让事情变得更有些挑战性,我最终选择实现一个高性能的Web服务器。
-
在宏观上我希望TinyWeb能够这样:
- 配置简单
- 扩展容易
- 性能高效
- 功能强大
-
并希望在开发的过程中能够掌握以下知识:
-
TinyWeb 目前的功能是:
-
- 使用进程池的方式提高并发性
- 强有力的支持多种版本Http协议
- 负载均衡功能
- 代理功能
二、设计思想
1. 网络中最麻烦的是如何处理阻塞的事件:
如果IO事件没有发生,系统阻塞的等待IO事件发生,那么CPU就被
浪费了,为实现高并发,不能让进程阻塞,CPU等待IO事件.
借助Linux高效的Epoll机制,
至于为何使用Epoll,而不使用Select或Poll,点这里看看吧.
2.为了提高并发性:到底是选择多进程还是多线程模式
多进程与多线程各有优缺点,并且大部分是互补的,具体就不再赘述了,
详情请戳这里
我选择多进程的原因是:
在接受客户端连接的时候,如何再去创建一个进程,效率低下.故因此采用进程池的方式:
Master进程为父进程,主要控制子进程的状态;可动态配置数量的Slave子进程,用于接受连接,
处理Http逻辑.
3.C++最难管理的还是内存
为了方便的进行内存管理,我设计了一个内存池,不会产生大量的内存碎片,性能待测试.以后还会
介绍如何实现的,尽请期待.
4.进程间通信的方式很多,到底选择哪几个
了解了下Nginx,有考虑了使用的复杂度,我决定使用这几个通信.同步机制
- 原子操作
- 信号量
- 消息队列
- 共享内存
- 信号
三、源码
想要源代码的请戳这里,希望大家多多对代码风格做出评判,毕竟自己只是个大三的学生.
四、参考文献
小伙伴想要了解更多的高性能的网络编程,推荐一个大神的专栏
以上是脚本宝典为你收集整理的TinyWeb--C++构建高性能Web服务器全部内容,希望文章能够帮你解决TinyWeb--C++构建高性能Web服务器所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。