众所周知,Netty 作为当前流行的 NIO 框架,操作省时、省事还安全,在云计算、大数据通讯,电商、游戏等领域都有广泛的应用。如果是一个大型网站,内部接口非常多的情况下,好处很明显——首先就是长链接,不用每次通信都要像 http 一样去 3 次握手什么的,减少了网络开销;其次就是其自带的注册中心、监控管理、动态扩展等,开发非常方便。然而,想要将 Netty 真正掌握并精通难度却不小。一些学习者平时只注重使用,但一到面试的时候往往卡壳:
- Netty框架本身存在粘包半包问题?什么时候需要考虑?
- 如何实现 WebSocket 长连接?
- 服务端如何进行初始化?何时接受客户端请求?何时注册接受 Socket 并注册到对应的 EventLoop 管理的 Selector ?
- Netty 的零拷贝如何实现?
如上,面试官一问到 Netty ,大概率会问到源码问题。如果多线程编程、Socket 通信、TCP/IP 协议栈等知识掌握不扎实,很难回答上来。即便在工作中,Netty 调用过程中遇到问题,如果不会追踪定位,效率也会很低。因此,沉下心来,抓重点的学习,才能事半功倍,攻克 Netty 。
目录
基础篇 走进Java NIO
Java的一些类库在早期设计中功能并不完善或者存在一些缺陷,其中最令人恼火的就是基于同步I/O的Socket通信类库,直到2002年2月13日JDK1.4 Merlin的发布,Java才第一次支持非阻塞I/O,这个类库的提供为JDK的通信模型带来了翻天覆地的变化。
入门篇 Netty NIO开发指南
作为Netty的第一个应用程序,我们依然以时间服务器为例进行开发,通过Netty版本的时间服务器的开发,让初学者尽快学到如何搭建Netty开发环境和运行Netty应用程序
中级篇 Netty编解码开发指南
当进行远程跨进程服务调用时,需要把被传输的Java对象编码为字节数组或者ByteBuffer对象。而当远程服务读取到ByteBuffer对象或者字节数组时,需要将其解码为发送时的Java对象。这被称为Java对象编解码技术。
高级篇 Netty多协议开发和应用
HTTP (超文本传输协议)协议是建立在TCP传输协议之上的应用层协议,它的发展是万维网协会和Internet I作小组IETF合作的结果。HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。
源码分析篇 Netty功能介绍和源码分析
对源码的学习不仅能够帮助使用者从源码的层面掌握Netty框架,方便日后的维护、扩展和定制,更能够起到触类旁通的作用,拓展读者的知识面,提升编程技能。
架构和行业应用篇 Netty高级特性
作为异步事件驱动、高性能的NIO框架,Netty代码中大量运用了 Java多线程编程技巧。并发编程处理的恰当与否,将直接影响架构的性能
总目录
只有文档怎么够?文档+视频,相互搭配,事半功倍!
Netty 编程之手写RPC框架 -重点内容(视频讲解)
- RPC底层通信原理
- Netty开发中的核心概念
- Netty的开发流程
- Netty 源码解析(Netty 服务端启动、 NioEventLoop、Pipeline、Channel )
- 使用动态代理实现远程调用
- 手工实现一个RPC框架
- Netty 与 Spring Boot 整合
本次视频的分享人 Mark,先后在金蝶、华为、58等公司工作,岗位也从最初的开发工程师到后来的RDPM/SE,再到技术经理、架构师等高T级别,带领团队主持和主导了许多电信后台项目和互联网项目。Mark 积累了多年 RPC 框架的设计经验,并主导了多个项目的推广和落地。在 Netty 编程方面有很多实战干货可以分享,相信能够帮大家解决在工作中遇到的一些技术难点和困惑。
需要领取这套阿里、华为等大厂必知必会的《Netty核心知识点》的朋友,麻烦点赞小编这篇文章,然后点这里直达即可。