为了解决这个排队问题,Boss打算招聘多位小姐姐(线程池)。但是客户的到来有时多,有时少,所以前台小姐姐也是有时候很空闲,有时候很繁忙。
NIO由于小姐姐引导客户处理业务时,客户经常由于填表(业务处理中数据库操作等)等操作,导致小姐姐在一旁等待。而这时候,前台还有客户在等待。
为了解决这个问题,Boss在前台放置了一个铃铛(accept注册)。
当有新的客户到来时,小姐姐就会给他一个新的铃铛(read等事件注册),用于在处理业务时呼唤她。
Reactor(Basic Reactor)随着客户处理业务的上升,Boss招收了多位工作人员(worker thread),用于引导客户处理业务。
而小姐姐(Acceptor)只负责招待客户(只处理accept事件),交给客户新的铃铛(read等事件注册)。客户通过新的铃铛找到工作人员,处理业务。
Reactor(Multiple Reactor)随着业务规模的进一步提升,一位前台小姐姐已经忙不过来了。
Boss就在前台安排了多位小姐姐,招待与引导客户。
Netty看到Boss的成功,许多人都争相模仿,但是由于了解不深刻,总是出现各种问题。
Boss希望通过这一成功经验,帮助到其它人,所以制作了一款工作流软件(Netty)。
其他人只需要下载这个软件,然后按照其中的简单引导,进行设置,就可以轻松使用。
问题解决解决问题一般都是三个步骤:
先通过一些比较简单,比较暴力的方式解决问题;
再根据问题解决过程中的一些思想火花,以及一些资料,优化解决方案;
然后根据需要,视情况看,是否执行这一步。查阅各种资料,请教各位前辈,在原来的基础上,再进一步优化;
最后,在无法提升的情况下,考虑将这个解决方案,做成一个工具,一个框架,去帮助其他人。
就像我在leetcode上,一般第一步,都是先按照自己最直观的想法,先尝试解决问题,然后再考虑优化,最后思考是否可以通用化,工具化等。
留言这次只是简单提一些网络编程的演变过程,也算是帮助大家入门吧。
后续会进行深入的原理分析与总结,并会写成博客,发布出来的。