一起学netty(6)为什么会出现netty
根据前几篇的文章对bio、nio网络模型的叙述,我们可能大概已经了解了io网络模型的演化过程,以及在演化过程中的各个阶段各自解决了那些问题,以及是如何提高性能的。
随着select、poll、epoll等各种多路复用器的出现,我们通过原生的nio已经可以写出一些高性能的程序。但是深入分析,我们还是可以从中找出很多问题:
- 1.原生的nio服务端程序需要我们自己去解决客户端的连接、客户端收发数据,异常等问题。
- 2.当服务端的活跃的连接数过多(活跃数达到万/十万级),单线程时在处理客户端收发数据的时间就会占用过多,处理新的客户端连接(连接/断开/异常等)就会出现延迟,而且一个线程处理很多客户端的数据收发也会出现延迟。那就迫切需要多线程的介入来进行优化。
- 3.在处理以上问题时,编写程序过程会变得非常复杂,而且容易出现错误。
- 等等...
随着问题的不断出现,以及处理的难度越来越高,netty也就随之出现了。
首先Netty内部也是基于nio的网络io模型进行开发的。
Netty内部封装了处理客户端连接、数据收发等多线程的线程模型,我们只需通过简单的编码配置就可以实现,有进一步的提高了服务端的性能,以及程序员编码的复杂度。
Netty也对客户端连接处理,数据收发方法处理,以及会出现的异常的处理等做了抽象和封装。提供给开发人员简单的接口,那么开发人员通过重写某些方法就可以完成相应的任务。用户不在需要自己去处理客户端的连接问题,以及客户端收据收发的问题或对二进制数据包的解析等问题,极大的简化了开发的过程。让开发者们更多的关注业务。从上一节《一起学netty(5)netty入门程序案例》的入门程序中也可以看出来。
fixed
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。