WebServer项目介绍
这是一个基于Linux平台下的轻量级的web服务器项目,可实现上万的并发连接,项目中主要用的技术有,线程池 + 非阻塞socket+epoll+事件处理的并发模型,状态基解析http请求,以及支持同步和异步的日志系统
线程池是服务器预先创建的一组子线程,子线程拥有相同的代码和属性,当有新的任务到来时,主线程会通过某种算法来选择子线程为之服务。
相比于动态创建子线程,选择已经存在的子线程为之服务,开销要小的多
动态创建的子线程一般只能为一个客户服务,这将导致很多的细微线程产生,线程的切换会花费大量时间
//socket通信设置为非阻塞,边沿触发避免由于一个文件描述符的阻塞读/阻塞写操作把处理多个文件描述符的任务饿死
epoll?高效的IO复用技术
两种高效的事件处理模型 Reactor(实现简单)和Proactor(性能更高)
同步 I/O 模型通常用于实现 Reactor
模式,异步 I/O 模型通常用于实现 Proactor
模式。
主要区别就是 真正的读取和写入操作是由谁来完成的。
Reactor
来了事件操作系统通知应用进程,让应用进程来处理;
Proactor
来了事件操作系统来处理,处理完再通知应用进程。
有限状态机:根据应用层协议的不同类型字段,映射为逻辑单元的不同执行状态,服务器可以根据此来编写相应的处理逻辑
WebServer项目介绍相关推荐
- windows下nodejs express安装及入门网站,视频资料,开源项目介绍
windows下nodejs express安装及入门网站,视频资料,开源项目介绍,pm2,supervisor,npm,Pomelo,Grunt安装使用注意事项等总结 第一步:下载安装文件 下载地址 ...
- 欢迎来到美多商城!-项目准备之项目介绍-项目需求分析-项目架构设计
欢迎来到美多商城! [前后端不分离的项目] 项目介绍 项目需求分析 需求分析原因: 可以整体的了解项目的业务流程和主要的业务需求. 项目中,需求驱动开发.即开发人员需要以需求为目标来实现业务逻辑. 需 ...
- 新东方php工程,这几个游学项目介绍,了解一下
活着,除了改变世界,还有什么更重要的事情?也许你就差一个契机.这里有几个游学项目介绍,了解了,也许就是你改变世界的开始.不是玩笑话,科学家一直强调人的智慧还没有得到完全开发,所以一些陌生环境的刺激加上 ...
- 几种P2P流媒体开源项目介绍
P2P流媒体开源项目介绍 1. PeerCast 2002年成立,最早的开源P2P流媒体项目.PeerCast把节点按树结构组织起来, 每个频道都是一个树, 直播源是根节点,父节点只给子节点提供数据. ...
- 揭开webRTC媒体服务器的神秘面纱——WebRTC媒体服务器开源项目介绍
揭开webRTC媒体服务器的神秘面纱--WebRTC媒体服务器&开源项目介绍 WebRTC生态系统是非常庞大的.当我第一次尝试理解WebRTC时,网络资源之多让人难以置信.本文针对webRTC ...
- Hadoop学习笔记—20.网站日志分析项目案例(一)项目介绍
Hadoop学习笔记-20.网站日志分析项目案例(一)项目介绍 网站日志分析项目案例(一)项目介绍:当前页面 网站日志分析项目案例(二)数据清洗:http://www.cnblogs.com/edis ...
- 10年C#历程的MVP之路与MVP项目介绍
本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html 1.意外的惊喜 10月份收到微软总部寄来的荣誉证书,非常激动, ...
- Bootstrap4+MySQL前后端综合实训-Day09-AM【项目功能展示视频、小组汇报PPT、项目介绍】
[Bootstrap4前端框架+MySQL数据库]前后端综合实训[10天课程 博客汇总表 详细笔记][附:实训所有代码] 目 录 项目功能展示视频(视频地址:https://live.csdn.n ...
- Eurasia3 支持百万级用户的服务器和框架 - 国内开源项目介绍
项目名称: Eurasia3 发起时间: 2004年 代码托管:http://code.google.com/p/eurasia 项目介绍: Eurasia3 是一种能够支持百万级同时在线长连接用户数 ...
最新文章
- 微信、陌陌等著名IM软件设计架构详解【转】
- java 线程 Thread 使用介绍,包含wait(),notifyAll() 等函数使用介绍
- python列表每行查找字符串,python - 用python查找子字符串列表成字符串列表 - SO中文参考 - www.soinside.com...
- JavaScript id_好程序员web前端分享Javascript中函数作为对象
- linux挂载硬盘读写,mount 挂载第二块硬盘,普通用户可以读写
- Oracle 11g Dataguard参数详解
- Swift傻傻分不清楚系列(十一)类和结构体
- 给你的Linux把把脉(内存、磁盘、CPU、网络)
- delphi datasnap断线后再次连接_电脑连接WiFi后经常出现断线断开连接问题的解决方法...
- python读入txt数据,并转成矩阵
- 微软开源深度学习优化库 DeepSpeed 连登 GitHub 趋势榜!
- 分享一个热血合击脚本辅助工具(以及随机数生成器源码)
- Spark安装与配置(单机版)(保姆级教程)
- 获取百度云盘真实下载链接(告别云盘客户端,全速下载)
- matlab gui初始化全局变量,MATLAB GUI 全局变量的定义和使用回调函数的更改
- linux 实时显示网速工具nload
- 软件技术专家能力模型
- outlook附加文件超过服务器允许大小,如何在Outlook中更改或增加附件大小限制?...
- python乳腺癌细胞挖掘
- iptable详细配置