• 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,赶快点赞收藏献爱心吧,我们下一个文章见

  • 相关阅读:
    费曼学习法
    Ubuntu修改系统默认编码
    如何在Ubuntu 18.04上安装和使用PostgreSQL
    Bash简介 & Bash是如何处理命令的
    ubuntu环境变量的三种设置方法
    psql 工具详细使用介绍
    使用ubuntu server18.04 搭建odoo12运行环境
    Ubuntu修改时区和更新时间
    Ubuntu18.04修改apt-get源
    对表内数据间隔特定的长度求和
  • 原文地址:https://www.cnblogs.com/worldline/p/16398148.html
Copyright © 2020-2023  润新知