scalable io in java学习


scalable io in java学习
单线程版本

reactor就是一个分发器
当收到client的accept请求时,转给acceptor来处理
当收到client socket的read请求时,转给handler处理
整个处理过程因为是单线程,都是阻塞的。


scalable io in java学习
多线程版本

与单线程版本不同之处是
在handler中的read之后,write之前的业务处理部分
采用线程池来处理业务代码
整个设计不会因为业务部分太耗时而导致整个系统性能过低


scalable io in java学习
多reactor版本
mainReactor单独用来处理client的连接请求,交给acceptor处理
acceptor接受了client连接后,交给subReactor来监听
subReactor来分发client的请求,交给相应的handler来处理
此模式中subReactor可以有多个,一般来说个数和cpu数相同


netty版本
netty在多reactor版本的基础上削减了线程池
当你的cpu数是1时,你相当于退化到单线程版本了
当碰到业务处理时间较长时,可以添加线程池部分
通过在netty的pipeline中添加ExecutionHandler即可

你可能感兴趣的:(Java学习)