Netty概述
Netty是一个Java语言开发的异步事件驱动的网络应用框架,可以用来快速的开发和维护高性能的服务端和客户端。
功能和设计
Netty的提供了很多重要的功能和设计,个人觉得其中几个对Netty是相当重要的。
事件驱动
Netty中几乎所有的操作都是异步事件驱动的,通过Future
和GenericFutureListener
可以对任何操作(包括IO)注册结果响应事件,性能上有保障。
管道
Netty抽象了ChannelHandler
来响应各种事件,管道ChannelPipeline
就是将多个ChannelHandler
组合起来,以责任链的方式触发各种事件的调用。
管道有一点SEDA
的意思,用户可以一步一步的操作数据流,对于开发非常友好。
线程模型
Netty支持多种线程模型,比较主流的是服务端采用主从Reactor模型,而客户端采用多线程模型。
合理的线程模型是保证高性能的先决条件。
对象池
Netty提供了对象池功能,类似于jemalloc
,可以减少内存的申请和释放的系统调用次数,提高性能。
编解码器
Netty默认提供了丰富的编解码器,如:http、http2、redis、protobuf等等,用户编写自定义的编解码器也不是很困难,使用和扩展都非常方便。
总结
以上是对Netty的一些粗略的介绍,希望可以抓住重点。
除了上面介绍的,Netty还对JDK、网络、数据结构等做了很多细节的优化。
之后会一点一点的详细介绍Netty各个组件的细节。