[置顶] 如何设计一个可用的web容器
来源:互联网 发布:k3即时库存 sql 编辑:程序博客网 时间:2024/05/17 09:20
之前在另外一个平台(http://www.jointforce.com/jfperiodical/article/1035)发表的一篇文章,现在发布到自己的博客上。
开发一个web容器涉及很多不同方面不同层面的技术,例如通信层的知识,程序语言层面的知识等等,且一个可用的web容器是一个比较庞大的系统,要说清楚需要很长的篇幅,本文旨在介绍如何设计一个web容器,只探讨实现的思路,并不涉及过多的具体实现。把它分解划分成若干模块和组件,每个组件模块负责不同的功能,下图列出一些基本的组件,并将对每个组件进行介绍。
连接接收器
主要的职责就是监听是否有客户端套接字连接并接收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
- [置顶] 如何设计一个可用的web容器
- 如何设计一个可用的web容器
- 如何设计一个可用的web容器
- 如何设计一个可用的web容器
- 如何设计一个web容器
- 如何设计一个web容器
- 一个浮动置顶的设计
- 如何设计一个支持高并发的高可用服务
- 如何自己设计一个高效类似于HashMap的容器
- [置顶] Aert_Log: 设计一个精简易用的日志
- 如何设计一个用户为中心的Web应用程序
- web是如何启动spring容器的?
- web是如何启动spring容器的
- 设计web容器
- [置顶] 改一个PHP WEB SHELL
- 如何设计并实现一个ioc容器(转载)
- 设计高可用Web服务
- 如何将一个字符'VBAK'变成一个可用的变量
- 【线性表】顺序表
- iOS 程序进入后台到底发生了什么?
- Kotlin 学习(1) -- Hello World
- 解决IOS9友盟分享时明明安装了相关的分享软件,却提示未安装的问题
- 用Delphi怎么调用IE菜单中的internet选项
- [置顶] 如何设计一个可用的web容器
- 使用ContentObserver实现短信提醒功能
- UITableView --- 通讯录demo1
- android makefile 编译分析及 android.mk分析
- SODBASE CEP学习进阶篇(七):SODBASE CEP与Spark streaming集成
- java虚拟机
- mysql中的关键字
- UIImageView的图片切割问题
- 用Delphi即时判断当前的网络的连接方式