文中指的web服务程序指对外提供网络服务的一类服务程序,当然http webservcie是最典型的一类,http webservice有很多成熟的容器,如tomcat、websphere等,依托这些容器程序员们不用关注底层的网络通信、会话保持、进程管理等内容,只用专注于上层业务逻辑实现,降低了使用者的门槛,容器、框架再屏蔽底层细节给程序员们带来的困惑的的同时,也会让程序不了解底层的本质的东西,在一些技术细节地方拿捏不好。但任何大师级人物,他的基本功肯定都是最过硬的。程序员要做到高段位,对基础知识要搞透彻对系统架构的东西要能认清其本质,并且能有自己的见解。对于较小并发请求时各种编程模型性能都相差无几,但对于高并发时,模型对性能的影响将是巨大的。这类服务程序模型大致有几种。
1、多进程模型
对web请求的处理单元是进程,监听主进程收到网络请求时开辟进程来处理这个请求,每个进程处理调度分配给其的web请求。
其解决了单进程服务程序进程阻塞的问题,但系统的资源是有限的,面对高并发,进程开辟到一定程度资源是要被分配光的,即使采用资源池的模型,进程简单的切换开销也是巨大的。
2、多线程模型
web请求的处理单元是较进程轻量级的线程,监听主线程收到网络请求是开辟线程来处理这个请求。
的确,线程较进程的创建、切换开销小了,某种程度上可以提升系统性能,但线程模型中,一旦某个线程崩溃,整个进程也将退出,同时线程间的资源竞争也会引起一些新问题。
3、IO多路复用
此模型可使得一个进程同时处理多路IO。将监听事件注册到内核,当监听事件被触发则通过回调的方式通知。
<