netty最佳学习路线
写在前面
这个专题是在经历公司项目后,准备沉淀下来的一点点心得和记录,算是对java领域网络编程的初探,网络编程领域还有很多需要学习和自己不足的地方,谨以自勉。
如果对你有一点点帮助,欢迎收藏、点赞、分享,或者私信交流。
一、netty简介
-
官网的描述
Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients
Netty 是一个异步的、基于事件驱动的网络应用框架,用于快速开发可维护、高性能的网络服务器和客户端
其中几个关键字我们可以关注,这个是我们后续了解、学习netty的重点:
-
异步
-
事件驱动
-
易维护
-
高性能
-
-
netty的作者是Trustin Lee,韩国人,同时他也是Apache Mina的作者之一,但是
netty更像是他的亲儿子。事实也证明netty也不负众望一直保持着强劲的活力,下面是netty在GitHub上的一些数据表现
-
watch、fork、start
-
代码更新频率(小时级别)
-
心电图
-
-
netty是一款基于NIO(非阻塞I/O)开发的网络框架,与传统的BIO(阻塞式I/O)相比,它的并发性能得到了很大的提高,而且更节省资源,netty封装了很多NIO的细节,可以屏蔽NIO API带来的不便,并且设计优秀的线程模型让netty的应用更加灵活。
netty不仅仅是一个java网络领域的框架,netty涉及多线程技术、复杂数据结构、内存管理模型、设计模式及底层TCP的技术,所以,在接触netty过程中能接触到很多优秀前辈们留下来的瑰宝,值得反复学习琢磨。
二、行业应用情况
-
地位
netty在java网络框架中的地位就好比,spring框架在JavaEE开发中的地位
-
框架应用
- Cassandra - nosql 数据库
- Spark - 大数据分布式计算框架
- Flink - 大数据分布式新一代计算框架
- Hadoop - 大数据分布式存储框架
- Hbase - 为Hadoop提供类似BigTable服务的nosql
- RocketMQ - ali 开源的消息队列
- ElasticSearch - 分布式搜索引擎
- gRPC - google rpc 框架
- Dubbo - rpc 框架
- Spring 5.x - flux api 使用netty作为服务器端
- Zookeeper - 分布式协调框架
- …
三、优势
-
Java NIO存在的一些问题
- NIO的类库和API复杂,需要熟练掌握Selector、ServerSocketChannel、SocketChannel、ByteBuffer等。
- 需要其他额外技能的铺垫,比如熟悉java多线程编程,因为NIO编程涉及到Reactor模式,必须对多线程编程非常熟悉
- 需要自己构建协议
- 解决TCP传输中,由于TCP滑动窗口存在导致的粘包、半包问题
- epoll 空轮训导致 CPU 100%(epoll bug)
-
netty较于NIO的优势
- 易用性:netty封装了Java NIO各种细节,提供了简单易用的API
- 高并发:netty基于Reactor构建线程模型,使具有吞吐量大,延迟短,速度快和资源消耗低
- 安全性:支持SSL/TLS和StartTLS支持
- 文档友好、丰富:javadoc完整,用户指南以及实用案例详细
- 社区支持:社区活跃,对于新功能迭代快,bug fix 快
四、学习路线
- Netty-浅谈JAVA NIO
- Netty-helloword
- Netty-功能模块
- Netty-粘包、半包
- Netty-编解码
- Netty-私有协议开发
- Netty-模块详解
- Netty-线程模型
- Netty-内存模型
- Netty-实战
- Netty-高性能之道
- Netty-安全
- Netty-源码分析
五、最后
简单介绍了netty在网络编程中的地位和优势,以及后面会持续更新文章的大体内容,如果你也想系统性了解netty,赶快点赞收藏献爱心吧,我们下一个文章见
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix