最近对netty有了新的理解,就是netty这个框架只是负责网络IO的,就是对Java NIO的封装,方便你使用。你的业务逻辑如何执行,netty是不关心的。其实,netty的worker group是负责处理网络IO的线程池,而不是负责业务处理的(boss group负责创建连接)。当然了,对于一些简单的业务逻辑,可以直接放在IO线程中执行,但是复杂的逻辑还是要自建业务线程池进行处理。
过多的业务ChannelHandler会带来开发效率和可维护性问题,不要把Netty当作业务容器,对于大多数复杂的业务产品,仍然需要集成或者开发自己的业务容器,做好和Netty的架构分层,也就是把Netty作为底层支撑,用于网络通信。
最好把netty当做纯的tcp连接工具就行了,所有业务放在自己的线程池或者队列里,不要依赖它的线程模型,因为它的不一定是你想要的。
最后,我觉得netty毕竟不是Java后端的刚需,SSM那些才是,所以我对netty的学习先到此为止吧,等我把那些刚需的知识都学完之后,如果还有时间才来继续研究netty。