天天看点

Netty系列之Netty 服务端创建

Netty系列之Netty 服务端创建

在开始本文之前,我先讲一件自己亲身经历的事:大约在2011年的时候,周边的两个业务团队同时进行新版本开发,他们都需要基于nio非阻塞特性构建高性能、异步和高可靠性的底层通信框架。

当时两个项目组的设计师都咨询了我的意见,在了解了两个项目团队的nio编程经验和现状之后,我建议他们都使用netty构建业务通信框架。令人遗憾的是其中1个项目组并没有按照我的建议做,而是选择直接基于jdk的nio类库构建自己的通信框架。在他们看来,构建业务层的nio通信框架并不是件难事,即便当前他们还缺乏相关经验。

两个多月过去之后,自研nio框架团队的通信框架始终无法稳定的工作,他们频繁遭遇客户端断连、句柄泄露和消息丢失等问题。项目的进度出现了严重的延迟;形成鲜明对比的是,另一个团队由于基于netty研发,在通信框架上节省了大量的人力和时间,加之netty自身的可靠性和稳定性非常好,他们的项目进展非常顺利。 

这两个项目组的不同遭遇告诉我们:开发高质量的nio程序并不是一件简单的事情,除去nio类库的固有复杂性和bug,作为nio服务端,需要能够处理网络的闪断、客户端的重连、安全认证和消息的编解码、半包处理等。如果没有足够的nio编程经验积累,自研nio框架往往需要半年甚至数年的时间才能最终稳定下来,这种成本即便对一个大公司而言也是个严重的挑战。

数据流处理、应用程序开启、处理协议编码等工作因为netty都变得更加简单,也正因如此,掌握netty也成为了抢手java开发的必备素质。

本文 从socket例子入手,一步步深入探究netty源码,剖析代码背后的原理,解决面试中遇到的netty问题,彻底掌握netty。

Netty系列之Netty 服务端创建
Netty系列之Netty 服务端创建
Netty系列之Netty 服务端创建

大小8.23g,mp4格式