Netty is an async event-driven network application framework for rapid development of maintainable high performace protocol servers & clients.

揭开netty的面纱

  • 本质:网络应用框架
  • 实现:异步、事件驱动
  • 特性:高性能、可维护、快速开发
  • 用途:开发服务器和客户端

netty架构

image.png

为什么舍近求远用netty,不用javaNIO?

netty做的更好,做的更多
做的更多:

  1. 支持常用应用层协议
  2. 解决传输问题:粘包、半包现象
  3. 支持流量整形
  4. 完善断连、idle等异常处理

做的更多:

  1. 规避JDK NIObug, 如epollbug,异常唤醒 空转cpu,踏平jdk NIO 5646个bug
  2. api更友好、更强大
  3. 隔离变化、屏蔽细节

netty发展史

  • 2004年6月netty2发布
  • 2008年10月 netty3发布
  • 2013年7月nentty4发布
  • 2013年12月发布5.0.0Alpha1
  • 2015年11月废弃5.0.0

netty现状及发展趋势

社区现状
  • https//github.com/netty/netty

    应用项目

    截至2019年9月,30000+项目在使用 (统计方法:github开源项目中依赖中声明io.netty:netty-all)
    使用netty的典型项目:

  • 数据库:Cassandra

  • 大数据处理 :Spark、Hadoop
  • Message Queue: RocketMQ
  • 检索:ElasticSearch
  • 框架:gRPC、Apache Dubbo、Spring5
  • 分布式协调器:ZooKeeper
  • 工具类:async-http-client

    趋势
  • 更多流利协议支持

  • 紧跟JDK新功能步伐
  • 更多易用、人性化性能:ip地址黑白名单、流量整形
  • 应用越来越多