Netty概述

Netty是一个Java语言开发的异步事件驱动的网络应用框架,可以用来快速的开发和维护高性能的服务端和客户端。

功能和设计

Netty的提供了很多重要的功能和设计,个人觉得其中几个对Netty是相当重要的。

事件驱动

Netty中几乎所有的操作都是异步事件驱动的,通过FutureGenericFutureListener可以对任何操作(包括IO)注册结果响应事件,性能上有保障。

管道

Netty抽象了ChannelHandler来响应各种事件,管道ChannelPipeline就是将多个ChannelHandler组合起来,以责任链的方式触发各种事件的调用。

管道有一点SEDA的意思,用户可以一步一步的操作数据流,对于开发非常友好。

线程模型

Netty支持多种线程模型,比较主流的是服务端采用主从Reactor模型,而客户端采用多线程模型。

合理的线程模型是保证高性能的先决条件。

对象池

Netty提供了对象池功能,类似于jemalloc,可以减少内存的申请和释放的系统调用次数,提高性能。

编解码器

Netty默认提供了丰富的编解码器,如:http、http2、redis、protobuf等等,用户编写自定义的编解码器也不是很困难,使用和扩展都非常方便。

总结

以上是对Netty的一些粗略的介绍,希望可以抓住重点。

除了上面介绍的,Netty还对JDK、网络、数据结构等做了很多细节的优化。

之后会一点一点的详细介绍Netty各个组件的细节。