Netty 是一个异步的、基于事件驱动的网络应用框架,用于快速开发可维护、高性能的网络服务器和客户端。Netty 在 Java 网络应用框架中的地位就好比:Spring 框架在 JavaEE 开发中的地位。以下的框架都使用了 Netty,因为它们有网络通信需求!
▪ Cassandra - nosql 数据库
▪ Spark - 大数据分布式计算框架
▪ Hadoop - 大数据分布式存储框架
▪ RocketMQ - ali 开源的消息队列
▪ ElasticSearch - 搜索引擎
▪ gRPC - rpc 框架
▪ Dubbo - rpc 框架
Spring 5.x - flux api 完全抛弃了 tomcat ,使用 netty 作为服务器端
Zookeeper - 分布式协调框架
Netty vs NIO,工作量大,bug 多,需要自己构建协议,解决 TCP 传输问题,如粘包、半包。epoll 空轮询导致 CPU 100%, 对 API 进行增强,使之更易用,如 FastThreadLocal => ThreadLocal,ByteBuf => ByteBuffer
Netty vs 其它网络应用框架
Mina 由 apache 维护,将来 3.x 版本可能会有较大重构,破坏 API 向下兼容性,Netty 的开发迭代更迅速,API 更简洁、文档更优秀。
久经考验,16年,Netty 版本
▪ 2.x 2004
▪ 3.x 2008
▪ 4.x 2013
▪ 5.x 已废弃(没有明显的性能提升,维护成本高)
网友评论