从 Java 1.4 时代起,JDK 便支持了 NIO (NEW IO)。面试
因 NIO (os nonblocking) 的非阻塞式工做方式,让应用服务器能够极大的优化线程模型,相比传统的阻塞式 IO 线程和链路一对一的模式,NIO 只需少许的线程便可处理全部的链路,这对广大的 Java 开发者来讲是一大福音,基于 NIO 能开发出更高效的网络应用。编程
然而使用 JDK 原生的 API 开发 NIO,编程模型是 很是复杂的,开发者须要理解 Selector、Channel、ByteBuffer 三大组件,此外 JDK 原生 NIO 实现上还存在一些稳定性问题。服务器
这个时候,Netty 应运而生,把三大组件交互代码封装在框架内部,有效的简化了编程模型,让使用者可以更高效的开发出 NIO 网络应用,保障了系统的稳定性。微信
可是伴随新的问题到来,对于开发者,框架是易于使用的,屏蔽了底层细节,换来的是对原理的深刻理解不够,对性能调优和理论的淡化,在不少优秀的线上产品 dubbo、spark、zookeeper、elasticSearch 等等,使用了 Netty 做为底层通讯 IO 框架支持后,对于 Netty 的原理,底层原理的关注愈加急迫,这一点也在面试环节尤其突出。网络
如何更为通俗易懂的搞懂 Netty,并理解其中的具体实现原理呢?框架
今天在这里,小编整理了一套技术资料不只能精准消除技术盲点、累计面试经验,更能够攻克MQ、JVM、Spring、分布式、微服务等技术难题。分布式
海量电子书,珍藏版微服务