这是一个基于Linux平台下的轻量级的web服务器项目,可实现上万的并发连接,项目中主要用的技术有,线程池 + 非阻塞socket+epoll+事件处理的并发模型,状态基解析http请求,以及支持同步和异步的日志系统

线程池是服务器预先创建的一组子线程,子线程拥有相同的代码和属性,当有新的任务到来时,主线程会通过某种算法来选择子线程为之服务。

相比于动态创建子线程,选择已经存在的子线程为之服务,开销要小的多

动态创建的子线程一般只能为一个客户服务,这将导致很多的细微线程产生,线程的切换会花费大量时间

//socket通信设置为非阻塞,边沿触发避免由于一个文件描述符的阻塞读/阻塞写操作把处理多个文件描述符的任务饿死

epoll?高效的IO复用技术

两种高效的事件处理模型 Reactor(实现简单)和Proactor(性能更高)

同步 I/O 模型通常用于实现 Reactor 模式,异步 I/O 模型通常用于实现 Proactor 模式。

主要区别就是 真正的读取和写入操作是由谁来完成的

Reactor来了事件操作系统通知应用进程,让应用进程来处理;
Proactor来了事件操作系统来处理,处理完再通知应用进程。

有限状态机:根据应用层协议的不同类型字段,映射为逻辑单元的不同执行状态,服务器可以根据此来编写相应的处理逻辑

WebServer项目介绍相关推荐

  1. windows下nodejs express安装及入门网站,视频资料,开源项目介绍

    windows下nodejs express安装及入门网站,视频资料,开源项目介绍,pm2,supervisor,npm,Pomelo,Grunt安装使用注意事项等总结 第一步:下载安装文件 下载地址 ...

  2. 欢迎来到美多商城!-项目准备之项目介绍-项目需求分析-项目架构设计

    欢迎来到美多商城! [前后端不分离的项目] 项目介绍 项目需求分析 需求分析原因: 可以整体的了解项目的业务流程和主要的业务需求. 项目中,需求驱动开发.即开发人员需要以需求为目标来实现业务逻辑. 需 ...

  3. 新东方php工程,这几个游学项目介绍,了解一下

    活着,除了改变世界,还有什么更重要的事情?也许你就差一个契机.这里有几个游学项目介绍,了解了,也许就是你改变世界的开始.不是玩笑话,科学家一直强调人的智慧还没有得到完全开发,所以一些陌生环境的刺激加上 ...

  4. 几种P2P流媒体开源项目介绍

    P2P流媒体开源项目介绍 1. PeerCast 2002年成立,最早的开源P2P流媒体项目.PeerCast把节点按树结构组织起来, 每个频道都是一个树, 直播源是根节点,父节点只给子节点提供数据. ...

  5. 揭开webRTC媒体服务器的神秘面纱——WebRTC媒体服务器开源项目介绍

    揭开webRTC媒体服务器的神秘面纱--WebRTC媒体服务器&开源项目介绍 WebRTC生态系统是非常庞大的.当我第一次尝试理解WebRTC时,网络资源之多让人难以置信.本文针对webRTC ...

  6. Hadoop学习笔记—20.网站日志分析项目案例(一)项目介绍

    Hadoop学习笔记-20.网站日志分析项目案例(一)项目介绍 网站日志分析项目案例(一)项目介绍:当前页面 网站日志分析项目案例(二)数据清洗:http://www.cnblogs.com/edis ...

  7. 10年C#历程的MVP之路与MVP项目介绍

            本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html  1.意外的惊喜 10月份收到微软总部寄来的荣誉证书,非常激动, ...

  8. Bootstrap4+MySQL前后端综合实训-Day09-AM【项目功能展示视频、小组汇报PPT、项目介绍】

    [Bootstrap4前端框架+MySQL数据库]前后端综合实训[10天课程 博客汇总表 详细笔记][附:实训所有代码] 目   录 项目功能展示视频(视频地址:https://live.csdn.n ...

  9. Eurasia3 支持百万级用户的服务器和框架 - 国内开源项目介绍

    项目名称: Eurasia3 发起时间: 2004年 代码托管:http://code.google.com/p/eurasia 项目介绍: Eurasia3 是一种能够支持百万级同时在线长连接用户数 ...

最新文章

  1. 微信、陌陌等著名IM软件设计架构详解【转】
  2. java 线程 Thread 使用介绍,包含wait(),notifyAll() 等函数使用介绍
  3. python列表每行查找字符串,python - 用python查找子字符串列表成字符串列表 - SO中文参考 - www.soinside.com...
  4. JavaScript id_好程序员web前端分享Javascript中函数作为对象
  5. linux挂载硬盘读写,mount 挂载第二块硬盘,普通用户可以读写
  6. Oracle 11g Dataguard参数详解
  7. Swift傻傻分不清楚系列(十一)类和结构体
  8. 给你的Linux把把脉(内存、磁盘、CPU、网络)
  9. delphi datasnap断线后再次连接_电脑连接WiFi后经常出现断线断开连接问题的解决方法...
  10. python读入txt数据,并转成矩阵
  11. 微软开源深度学习优化库 DeepSpeed 连登 GitHub 趋势榜!
  12. 分享一个热血合击脚本辅助工具(以及随机数生成器源码)
  13. Spark安装与配置(单机版)(保姆级教程)
  14. 获取百度云盘真实下载链接(告别云盘客户端,全速下载)
  15. matlab gui初始化全局变量,MATLAB GUI 全局变量的定义和使用回调函数的更改
  16. linux 实时显示网速工具nload
  17. 软件技术专家能力模型
  18. outlook附加文件超过服务器允许大小,如何在Outlook中更改或增加附件大小限制?...
  19. python乳腺癌细胞挖掘
  20. iptable详细配置

热门文章

  1. 985 高校副教授一年工资多少?
  2. 斯特封和格莱圈的区别
  3. 想拿到大厂offer?带你9步拆解字节跳动面试环节
  4. 【已解决】Chrome上js不生效
  5. 论文查重自己文章会查吗?
  6. 云计算学习好学吗?云计算这个行业前景如何?
  7. JAVA核心知识点--使用org.json.JSONObject处理Json数据
  8. kibana Discover查询晚8小时问题
  9. 很实用的五个杠杆炒股技巧
  10. 前端入门: 用css设置文字样式。