诞生于 2004 年的 Netty 是 Java 社区中第一个基于事件驱动的网络应用开发框架。
时隔17年,它经久不衰,已经是 Java 网络编程框架里的王者,没有之一。
在微服务的大潮之中, 架构师把系统拆分成了多个服务,根据需要部署在多个机器上,这些服务非常灵活,可以随着访问量弹性扩展。
但世界上没有免费的午餐, 拆分成多个“微服务”以后虽然增加了弹性,但也带来了一个巨大的挑战:服务之间互相调用的开销。
这时候使用Netty就是绝佳的选择。
其实游戏领域是个更好的例子,长连接,自定义协议,高并发,Netty就是绝配。
因为Netty本身就是一个基于NIO的网络框架, 封装了Java NIO那些复杂的底层细节,给你提供简单好用的抽象概念来编程。
注意几个关键词,首先它是个框架,是个“半成品”,不能开箱即用,你必须得拿过来做点定制,利用它开发出自己的应用程序,然后才能运行(就像使用Spring那样)。
一个更加知名的例子就是阿里巴巴的Dubbo了,这个RPC框架的底层用的就是Netty。
另外一个关键词是高性能,如果你的应用根本没有高并发的压力,那就不一定要用Netty了。
鉴于此,为了让更多的开发人员学习好Netty,我特地分享这份公布:阿里高工手写的13万字的“Netty速成手册”。若你需要完整的pdf版,可以私信我免费领取密码“666”进行下载。
第一部分:Netty的概念及体系结构
1.Netty——异步和事件驱动(Java网络编程 Netty简介 Netty的核心组件)
2.你的第一款Netty应用程序(设置开发环境 Netty客户端/服务器概览 编写Echo服务器 编写Echo客户端 构建和运行Echo服务器和客户端)
3.Netty的组件和设计
4.传输(案例研究:传输迁移 传输API 内置的传输 传输的用例)
5.ByteBuf(ByteBuf的API ByteBuf类——Netty的数据容器 字节级操作 ByteBufHolder接口 ByteBuf分配 引用计数)
6.ChannelHandler和ChannelPipeline(ChannelHandler家族 ChannelPipeline接口 ChannelHandlerContext接口 异常处理)
7.EventLoop和线程模型(线程模型概述 EventLoop接口 任务调度 实现细节)
8.引导(Bootstrap类 引导客户端和无连接协议 引导服务器 从Channel引导客户端 在引导过程中添加多个ChannelHandler 引导DatagramChannel 关闭)
9.单元测试(EmbeddedChannel概述 使用EmbeddedChannel测试ChannelHandler 测试异常处理)
第二部分:编解码器
1.编解码器框架(什么是编码器? 解码器 编码器 抽象的编解码器类)
2.预置的ChannelHandler和编解码器(通过SSL/TLS保护Netty应用程序 构建基于Netty的HTTP/HTTPS应用程序 空闲的连接和超时 解码基于分隔符的协议和基于长度的协议 写大型数据 序列化数据)
第三部分:网络协议
1.WebSocket(WebSocket简介 我们的WebSocket示例应用程序 添加WebSocket支持 测试该应用程序)
2.使用UDP广播事件(UDP的基础知识 UDP广播 UDP示例应用程序 消息POJO: LogEvent 编写广播者 编写监视器 运行LogEventBroadcaster和LogEventMonitor)
第四部分:案例研究
1.案例研究(上)
2.案例研究(下)
总结
为什么要学习Netty?作为开发人员,你到今天还没有找到答案吗?
学习,是为了让我们变成更好的自己。下载这本Netty速成手册,只需你转发 评论文章,关注我,私信领取密码“666”即可进行下载。
本文就是愿天堂没有BUG给大家分享的内容,大家有收获的话可以分享下,想学习更多的话可以到微信公众号里找我,我等你哦。