介绍
Netty是一个异步的,基于事件驱动(采用多路复用技术Selector)的网络应用框架。用于快速开发可维护、高性能的网络服务器和客户端。
IO事件发生时才会进行相应的处理。可连接,可读,可写事件。
Netty的异步
这里的异步不是异步IO,这里主要指Netty使用多线程完成方法调用和处理结果相分离。
如果调用方法的线程与接收结果的线程是同一个就意味着阻塞是同步;
如果调用方法的线程与处理结果的线程是两个就是异步;解放了调用方法的线程,让调用方法的线程可以腾出手来做别的工作。
使用了Netty的框架
因为它们有网络通信需求:
1.RocketMQ-ali 开源的消息队列
2.ES 搜索引擎
3.Dubbo rpc框架
4.Zookeeper 分布式协调框架
5.Cassandra-nosql 数据库
6.Spark 大数据分布式计算框架
7.Hadoop 大数据分布式存储框架
8.Spring 5.x -flux api完全抛弃了tomcat, 使用了Netty作为服务端
Netty的优势
1.Netty的底层是基于NIO
2.Netty将基础协议开发好了,http服务器、WebSocket服务器、https服务器
3.解决了TCP传输问题,粘包、半包
4.解决了epoll空轮训导致CPU 100%
5.对API进行增强,更易用,如:FastThreadLocal=>ThreadLocal, ByteBuf -> ByteBuffer
Netty版本
2.x, 3.x,4.x, 5.x(废弃)