一起学netty(6)为什么会出现netty

weblog 766 0 0

根据前几篇的文章对bio、nio网络模型的叙述,我们可能大概已经了解了io网络模型的演化过程,以及在演化过程中的各个阶段各自解决了那些问题,以及是如何提高性能的。

随着select、poll、epoll等各种多路复用器的出现,我们通过原生的nio已经可以写出一些高性能的程序。但是深入分析,我们还是可以从中找出很多问题:

  • 1.原生的nio服务端程序需要我们自己去解决客户端的连接、客户端收发数据,异常等问题。
  • 2.当服务端的活跃的连接数过多(活跃数达到万/十万级),单线程时在处理客户端收发数据的时间就会占用过多,处理新的客户端连接(连接/断开/异常等)就会出现延迟,而且一个线程处理很多客户端的数据收发也会出现延迟。那就迫切需要多线程的介入来进行优化。
  • 3.在处理以上问题时,编写程序过程会变得非常复杂,而且容易出现错误。
  • 等等...

随着问题的不断出现,以及处理的难度越来越高,netty也就随之出现了。

首先Netty内部也是基于nio的网络io模型进行开发的。

Netty内部封装了处理客户端连接、数据收发等多线程的线程模型,我们只需通过简单的编码配置就可以实现,有进一步的提高了服务端的性能,以及程序员编码的复杂度。

Netty也对客户端连接处理,数据收发方法处理,以及会出现的异常的处理等做了抽象和封装。提供给开发人员简单的接口,那么开发人员通过重写某些方法就可以完成相应的任务。用户不在需要自己去处理客户端的连接问题,以及客户端收据收发的问题或对二进制数据包的解析等问题,极大的简化了开发的过程。让开发者们更多的关注业务。从上一节《一起学netty(5)netty入门程序案例》的入门程序中也可以看出来。


猜你喜欢
official 917 来的问题,那netty就对解决这个问题提供了多线程的解决方案。netty的线程模型实际上Netty线程模型就是Reactor模式的个实,而Reactor模式又是呢?Reactor模式是基于事件
official 813 UpdaterequestHTTP包建立连接,之后的通信全部使用websocket自己的协议,就和http没啥关系了。有兴趣的同可以多了解下websocket协议报文的详细信息。Nettywebsoc
official 1057 之前的文章中提到过,单线程的nio模型任然有定缺点。在上节《netty(7)netty的线程模型》中也提到,netty,封装了nio复杂的代码,并且介入多线程来处理事件,最大限度的提
official 915 netty的包中,发也有ServerSocketChannel和SocketChannel,以及NioServerSocketChannel和NioSocketChannel,概念上来说
weblog 4175 从计算机程序的第,对效率的追求就是程序天生的信仰,这个过程犹如场没有终点,永不停歇的F1方程式竞赛,程序员是车手,技术平台则是在赛道上飞驰的赛车。---深入理解java虚拟机在是
official 823 是网络协议?网络协议就是计算机网络中进行数据交换而建立的规则、标准或约定的集合。有了网络协议才能实不同设备、不同操作系统、不同软件之间的数据交换。我们常说的tcp协议和udp协议其实是操作系
official 870 之前的文章介绍了protobuf的概念参考:http://www.jiajiajia.club/blog/artical/351psy9r6l0g/464以及protobuf的编码方式参考:http://www.jiajiajia.club/blog/artical/5puo1goygd3o/463proto文件准备Animal.protosyntax="proto3";import"Dog.pr
official 1556 篇《netty(2)nio模型及多路复用器》中已经简单介绍了nio模型,以及多路复用器的概念,并了解nio是非阻塞的网络模型,以及与bio的区别。本篇将继续深入理解nio,以及select
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。