从BIO到Netty的演变 (18)

为了解决这个排队问题,Boss打算招聘多位小姐姐(线程池)。但是客户的到来有时多,有时少,所以前台小姐姐也是有时候很空闲,有时候很繁忙。

NIO

由于小姐姐引导客户处理业务时,客户经常由于填表(业务处理中数据库操作等)等操作,导致小姐姐在一旁等待。而这时候,前台还有客户在等待。

为了解决这个问题,Boss在前台放置了一个铃铛(accept注册)。

当有新的客户到来时,小姐姐就会给他一个新的铃铛(read等事件注册),用于在处理业务时呼唤她。

Reactor(Basic Reactor)

随着客户处理业务的上升,Boss招收了多位工作人员(worker thread),用于引导客户处理业务。

而小姐姐(Acceptor)只负责招待客户(只处理accept事件),交给客户新的铃铛(read等事件注册)。客户通过新的铃铛找到工作人员,处理业务。

Reactor(Multiple Reactor)

随着业务规模的进一步提升,一位前台小姐姐已经忙不过来了。

Boss就在前台安排了多位小姐姐,招待与引导客户。

Netty

看到Boss的成功,许多人都争相模仿,但是由于了解不深刻,总是出现各种问题。

Boss希望通过这一成功经验,帮助到其它人,所以制作了一款工作流软件(Netty)。

其他人只需要下载这个软件,然后按照其中的简单引导,进行设置,就可以轻松使用。

问题解决

解决问题一般都是三个步骤:

先通过一些比较简单,比较暴力的方式解决问题;

再根据问题解决过程中的一些思想火花,以及一些资料,优化解决方案;

然后根据需要,视情况看,是否执行这一步。查阅各种资料,请教各位前辈,在原来的基础上,再进一步优化;

最后,在无法提升的情况下,考虑将这个解决方案,做成一个工具,一个框架,去帮助其他人。

就像我在leetcode上,一般第一步,都是先按照自己最直观的想法,先尝试解决问题,然后再考虑优化,最后思考是否可以通用化,工具化等。

留言

这次只是简单提一些网络编程的演变过程,也算是帮助大家入门吧。

后续会进行深入的原理分析与总结,并会写成博客,发布出来的。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpfgfx.html