netty最佳学习路线

写在前面

这个专题是在经历公司项目后,准备沉淀下来的一点点心得和记录,算是对java领域网络编程的初探,网络编程领域还有很多需要学习和自己不足的地方,谨以自勉。

如果对你有一点点帮助,欢迎收藏、点赞、分享,或者私信交流。

一、netty简介

  1. 官网的描述

    Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients

    Netty 是一个异步的、基于事件驱动的网络应用框架,用于快速开发可维护、高性能的网络服务器和客户端

    其中几个关键字我们可以关注,这个是我们后续了解、学习netty的重点:

    • 异步

    • 事件驱动

    • 易维护

    • 高性能

  2. netty的作者是Trustin Lee,韩国人,同时他也是Apache Mina的作者之一,但是

    netty更像是他的亲儿子。事实也证明netty也不负众望一直保持着强劲的活力,下面是netty在GitHub上的一些数据表现

    • watch、fork、start

    • 代码更新频率(小时级别)

    • 心电图

  3. netty是一款基于NIO(非阻塞I/O)开发的网络框架,与传统的BIO(阻塞式I/O)相比,它的并发性能得到了很大的提高,而且更节省资源,netty封装了很多NIO的细节,可以屏蔽NIO API带来的不便,并且设计优秀的线程模型让netty的应用更加灵活。

    netty不仅仅是一个java网络领域的框架,netty涉及多线程技术、复杂数据结构、内存管理模型、设计模式及底层TCP的技术,所以,在接触netty过程中能接触到很多优秀前辈们留下来的瑰宝,值得反复学习琢磨。

二、行业应用情况

  1. 地位

    ​ netty在java网络框架中的地位就好比,spring框架在JavaEE开发中的地位

  2. 框架应用
    • Cassandra - nosql 数据库
    • Spark - 大数据分布式计算框架
    • Flink - 大数据分布式新一代计算框架
    • Hadoop - 大数据分布式存储框架
    • Hbase - 为Hadoop提供类似BigTable服务的nosql
    • RocketMQ - ali 开源的消息队列
    • ElasticSearch - 分布式搜索引擎
    • gRPC - google rpc 框架
    • Dubbo - rpc 框架
    • Spring 5.x - flux api 使用netty作为服务器端
    • Zookeeper - 分布式协调框架

三、优势

  1. Java NIO存在的一些问题
    • NIO的类库和API复杂,需要熟练掌握Selector、ServerSocketChannel、SocketChannel、ByteBuffer等。
    • 需要其他额外技能的铺垫,比如熟悉java多线程编程,因为NIO编程涉及到Reactor模式,必须对多线程编程非常熟悉
    • 需要自己构建协议
    • 解决TCP传输中,由于TCP滑动窗口存在导致的粘包、半包问题
    • epoll 空轮训导致 CPU 100%(epoll bug)
  2. netty较于NIO的优势
    • 易用性:netty封装了Java NIO各种细节,提供了简单易用的API
    • 高并发:netty基于Reactor构建线程模型,使具有吞吐量大,延迟短,速度快和资源消耗低
    • 安全性:支持SSL/TLS和StartTLS支持
    • 文档友好、丰富:javadoc完整,用户指南以及实用案例详细
    • 社区支持:社区活跃,对于新功能迭代快,bug fix 快

四、学习路线

  1. Netty-浅谈JAVA NIO
  2. Netty-helloword
  3. Netty-功能模块
  4. Netty-粘包、半包
  5. Netty-编解码
  6. Netty-私有协议开发
  7. Netty-模块详解
  8. Netty-线程模型
  9. Netty-内存模型
  10. Netty-实战
  11. Netty-高性能之道
  12. Netty-安全
  13. Netty-源码分析

五、最后

简单介绍了netty在网络编程中的地位和优势,以及后面会持续更新文章的大体内容,如果你也想系统性了解netty,赶快点赞收藏献爱心吧,我们下一个文章见

posted @ 2022-06-21 20:04  别摸我键盘  阅读(278)  评论(0编辑  收藏  举报