Web Server 架构浅谈-Simple Multiple Threaded Achitecture
来源:互联网 发布:java 实现onvif 编辑:程序博客网 时间:2024/06/11 22:29
原文地址:http://blog.csdn.net/pennyliang/article/details/5931272
Web Server 架构浅谈-Simple Multiple Threaded Achitecture
Web Server的架构基本分为多线程和事件驱动两个基本观点,在实现上对多线程和事件驱动取长补短形成了流水线的架构。
在Web Server高并发,高吞吐率,低资源消耗,低延迟的要求下,Web Server的发展也历经了事件驱动占主流,到多线程反击[1][2],以及比较成熟的流水线架构。
在多线程的优点主要是容易理解,对资源的使用很容易饱和,缺点是上下文切换太多(线程代码段1份,10万个线程的话,就是重复10万份,要想无上下文切换就需要要10万个核),资源占用过多(线程创建需要给线程栈分配内存,虽有办法降低这个消耗,但依然可观),同步代码调试困难(正确性很难验证)。
事件驱动的主要缺点是系统的资源(内存,CPU)不容易饱和使用,用户响应时间较长。优点是编程简单,可以支持很高的并发量,linux2.6内核开始支持的epoll就是事件驱动的典型实现,事件驱动可以支持很高的并发量。
流水线的架构是介于多线程和事件驱动之间的一种形态,是目前广泛采用的架构。
从本次开始,依次将会介绍
1)简单的多线程架构
2)基于线程池的多线程架构
3)简单的事件驱动架构(将会结合epoll进行介绍)
4)流水线的架构(cooperative multithreading Model和lock-free queue的相关介绍)
5)多流水线的架构
下图是简单的多线程架构,很容易理解,不再赘述,未完待续。
螺旋线表线程的含义,如下图所示合计4个线程。Accept Loop承担的是dispatch任务的线程,其余线程处理用户请求。
带箭头环线表示循环,带箭头直线表示控制流。
detached表示线程执行完后即退出,因此一个线程的从生到死只为一个client的request服务。
推荐阅读:
1)Why threads are abad idea (for most purposes)
2)Whyevents are a bad idea (for high-concurrency servers)
- Web Server 架构浅谈-Simple Multiple Threaded Achitecture
- Web Server 架构浅谈-Simple Multiple Threaded Achitecture
- web server架构之一Simple Multiple Threaded Achitecture
- Web Server 架构浅谈-Threadpool-based Multiple Threaded Achitecture
- Web Server 架构浅谈-Threadpool-based Multiple Threaded Achitecture
- Web Server 架构浅谈-Threadpool-based Multiple Threaded Achitecture
- Web Server 架构浅谈-Simple Event-Driven Achitecture
- Web Server 架构浅谈-Simple Event-Driven Achitecture
- Web Server 架构浅谈-Simple Event-Driven Achitecture
- Web Server 架构浅谈-Staged Event-Driven Achitecture(SEDA)
- Web Server 架构浅谈-Staged Event-Driven Achitecture(SEDA)
- C# Tutorial - Simple Threaded TCP Server
- C# Tutorial - Simple Threaded TCP Server
- Implements a multi-threaded Web proxy server
- A Simple Web Server
- A Simple Web Server
- A Simple Web Server
- .net web 架构浅谈
- 工具——使用SVN进行项目版本管理
- 你用过栅格系统吗?如果使用过,你最喜欢哪种?
- Jboss配置远程调试
- 路由器专业术语
- ios算法总结(非完整版)
- Web Server 架构浅谈-Simple Multiple Threaded Achitecture
- API--2
- [Ext.Net 1.X]TreePanel的各项属性
- SAP ABAP编程SET PARAMETER ID问题 调用屏幕
- html内textarea嵌套ckeditor编辑器,文本框无法显示值的问题解决
- JSP中文乱码
- UDL使用
- 使用vertical-align实现input和img对齐
- Map集合