[置顶] 如何设计一个可用的web容器

来源:互联网 发布:k3即时库存 sql 编辑:程序博客网 时间:2024/05/17 09:20

之前在另外一个平台(http://www.jointforce.com/jfperiodical/article/1035)发表的一篇文章,现在发布到自己的博客上。

 

 

开发一个web容器涉及很多不同方面不同层面的技术,例如通信层的知识,程序语言层面的知识等等,且一个可用的web容器是一个比较庞大的系统,要说清楚需要很长的篇幅,本文旨在介绍如何设计一个web容器,只探讨实现的思路,并不涉及过多的具体实现。把它分解划分成若干模块和组件,每个组件模块负责不同的功能,下图列出一些基本的组件,并将对每个组件进行介绍。

 web容器,设计,JSP

连接接收器


主要的职责就是监听是否有客户端套接字连接并接收socket,再将socket交由任务执行器(线程池)执行。不断从系统底层读取socket,做尽可能少的处理,再扔进线程池。为什么强调要做尽可能少的处理?这里关系到系统性能问题,过多的处理会严重影响吞吐量。因为一般只有一个接收器(一条线程负责套接字接收工作),所以它对每次接收处理的时间长短将很可能对整体性能产生影响。于是接收器所干的活都是非常少且简单的,仅仅维护了几个状态变量、流量控制闸门的累加操作、serverSocket的接收操作、设置接收到的socket的一些属性、将接收到的socket放入线程池以及一些异常处理。其他需要较长时间处理的逻辑就交给了线程池,例如对socket底层数据的读取,对http协议报文的解析及响应客户端的一些操作等等。

http://www.qiyeku.com/xinwen7394315.html
http://www.qiyeku.com/xinwen7394309.html
http://www.qiyeku.com/xinwen7394302.html
http://www.qiyeku.com/xinwen7394292.html
http://www.qiyeku.com/xinwen7394284.html
http://www.qiyeku.com/xinwen7394274.html
http://www.qiyeku.com/xinwen7394267.html
http://www.qiyeku.com/xinwen7394259.html
http://www.qiyeku.com/xinwen7394246.html
http://www.qiyeku.com/xinwen7394236.html
http://www.qiyeku.com/xinwen7394226.html
http://www.qiyeku.com/xinwen7394219.html
http://www.qiyeku.com/xinwen7394209.html
http://www.qiyeku.com/xinwen7394201.html
http://www.qiyeku.com/xinwen7394183.html
http://www.qiyeku.com/xinwen7394176.html
http://www.qiyeku.com/xinwen7394167.html
http://www.qiyeku.com/xinwen7394159.html
http://www.qiyeku.com/xinwen.html
http://www.qiyeku.com/xinwen7394133.html
http://www.qiyeku.com/xinwen7394114.html
http://www.qiyeku.com/xinwen7394098.html
http://www.qiyeku.com/xinwen.html
http://www.qiyeku.com/xinwen.html
http://www.qiyeku.com/xinwen7394040.html
http://www.qiyeku.com/xinwen7394018.html
http://www.qiyeku.com/xinwen7393934.html
http://www.qiyeku.com/xinwen7393903.html
http://www.qiyeku.com/xinwen7393872.html
http://www.qiyeku.com/xinwen7393855.html
http://www.qiyeku.com/xinwen7393834.html
http://www.qiyeku.com/xinwen7393814.html
http://www.qiyeku.com/xinwen7393791.html
http://www.qiyeku.com/xinwen7393761.html
http://www.qiyeku.com/xinwen7393706.html
http://www.qiyeku.com/xinwen7393700.html
http://www.qiyeku.com/xinwen7393691.html
http://www.qiyeku.com/xinwen7393680.html
http://www.qiyeku.com/xinwen7393670.html
http://www.qiyeku.com/xinwen7393661.html
http://www.qiyeku.com/xinwen7393649.html
http://www.qiyeku.com/xinwen7393639.html

0 0