学习路线
- 整体浏览netty官网,了解下它的整个生态,解决了什么问题,版本更新情况。
- 了解它的体系结构
- 根据官网中的开发人员指南中的代码示例,自己实操一下。
- 参考其他人对netty贡献的技术文档,其中这个是比较新的文档,收录的国内开发人员的技术博客。
说明:2和3可以调换顺序看。 - 规划设计的netty 5
如下图,netty5中的亮点,圈1 如果你使用过Java并发编程技术或者阅读过Java并发编程艺术之类书籍,你可能就会知道Executor是什么。圈2 意思是netty的线程交给外部(整体系统)系统的线程池维护,也就是说不需要外部创建一个线程池,然后netty再创建一套线程池。
思考:netty为什么要这样做?
我们看现在计算机发展历程,从单核到多核,再到因特尔的超线程技术,越来越追求并行处理,但是并行处理并不代表线程越多越好,也不是有多少线程就有多少并行。简单理解,忽略超线程,一台16核服务器,一个cpu同一时刻只能处理一个线程,那就是16个并行。这个服务器只运行一个服务,并使用线程池技术,初始化8个线程,此时业务A、B、C占了三个线程,池里还有5个线程;而netty4.X中还要自己创建线程,维护线程池,但是实际整个系统中还有5个空闲线程可用,那我为什么还要再去创建线程,浪费有限的资源呢?随着项目的需求越来越多,功能越来越多,对资源的使用控制也要越来越谨慎,千万不要随意的去池化,一定要结合生产环境,或者可配置,从系统的整体考虑。
大家好,我是天津BigBig猿!
希望天津IT圈越来月好啊。