诞生于 2004 年的 Netty 是 Java 社区中第一个基于事件驱动的网络应用开发框架。
时隔17年,它经久不衰,已经是 Java 网络编程框架里的王者,没有之一。
在微服务的大潮之中, 架构师把系统拆分成了多个服务,根据需要部署在多个机器上,这些服务非常灵活,可以随着访问量弹性扩展。
但世界上没有免费的午餐, 拆分成多个“微服务”以后虽然增加了弹性,但也带来了一个巨大的挑战:服务之间互相调用的开销。
这时候使用Netty就是绝佳的选择。
其实游戏领域是个更好的例子,长连接,自定义协议,高并发,Netty就是绝配。
因为Netty本身就是一个基于NIO的网络框架, 封装了Java NIO那些复杂的底层细节,给你提供简单好用的抽象概念来编程。
注意几个关键词,首先它是个框架,是个“半成品”,不能开箱即用,你必须得拿过来做点定制,利用它开发出自己的应用程序,然后才能运行(就像使用Spring那样)。
一个更加知名的例子就是阿里巴巴的Dubbo了,这个RPC框架的底层用的就是Netty。
另外一个关键词是高性能,如果你的应用根本没有高并发的压力,那就不一定要用Netty了。
鉴于此,为了让更多的开发人员学习好Netty,我特地分享这份公布:阿里高工手写的13万字的“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?作为开发人员,你到今天还没有找到答案吗?
学习,是为了让我们变成更好的自己。