研究NIO时的柳暗花明

http://buaawhl.javaeye.com/blog/21474

这个贴子讲的是SEDA。SEDA的本意是构造10K请求的框架。原因是线程模型不是一个好的任务调度模型。

后面有人认为SEDA的思想其实就是批处理的思想,所以是倒退。

我不这么认为!批处理思想的出现正是为了充分利用系统资源。多任务思想之所以从来没有被质疑过,是因为大部分多任务系统并没有真正运行在多任务的环境中。说多任务大部分时候只是说用户级任务与系统级任务以时间分片的方式一起执行。而系统任务大部分都不要求实时响应。另一方面,绝大部分计算机虽然都能提供多用户服务,而其实并不需要为多于一个的用户提供服务,不管是在同一个时间还是不同的时间。

但是在高并发的服务器环境中,多任务的思想明显变得越来越行不通。你没有道理往一个只能容下10个人的厨房投入10000个厨师。如果非要这么做,这个厨房实际上到最后一盘菜也出不来。在外面的厨师什么也干不了就不用说了,在里面的厨师实际上基本上也干不了什么。因为大部分的人在里面呆的时间太短,以至于还没找到锅在哪里就被挤出来了。

理性的策略当然是将此厨房的生产能力最大化。如果还不能满足需要,只能新开厨房。生产能力要最大化,就要充分利用每一个厨师的能力。7*24小时工作制明显好过8小时工作制。因为前者是后者3倍的效率。

关键是要从概念上区别开任务的定义与执行。把进程当成任务本身,其实就是把任务的定义与执行放到了一起,不加区分!

你可能感兴趣的:(研究NIO时的柳暗花明)