首页 > Web开发 > 详细

初识netty

时间:2021-04-30 16:38:05      阅读:29      评论:0      收藏:0      [点我收藏+]

NIO基础

NIO:非阻塞IO

BIO:阻塞IO

1.三大组件

Channel

类似与stream流,是读取数据的双向通道,可以从channel将数据读入buffer,也可以将buffer的数据写入channel,之前的stream要么是输入,要么是输出,从某种方面来说,channnel比buffer更彻底

常见的channel

  • FileChannel 用于文件传输

  • DatagramChannel 用于UDP网络编程

  • SocketChannel TCP,客户端服务端都能用

  • ServerSocketChannel 专注于服务端

Buffer

Buffer 用于缓冲读写数据

一般我们的数据如果需要从IO读取到堆内存,中间需要经过Socket缓冲区,也就是说一个数据会被拷贝两次才能到达他的的终点,如果数据量大,就会造成不必要的资源浪费。 Netty针对这种情况,在堆内存之外开辟一块内存,也就是缓冲区,数据就直接从IO读到了那块内存中去,在netty里面通过ByteBuf可以直接对这些数据进行直接操作,从而加快了传输速度。

常用buffer

ByteBuffer,ShortBuffer,IntBuffer,LongBuffer,FloatBuffer,DoubleBuffer,CharBUffer

Selector

当一个连接建立之后,他有两个步骤要做,第一步是接收完客户端发过来的全部数据,第二步是服务端处理完请求业务之后返回response给客户端。NIO和BIO的区别主要是在第一步。 在BIO中,等待客户端发数据这个过程是阻塞的,这样就造成了一个线程只能处理一个请求的情况,而机器能支持的最大线程数是有限的。 而NIO中,当一个Socket建立好之后,Thread并不会阻塞去接受这个Socket,而是将这个请求交给Selector,Selector会不断的去遍历所有的Socket,一旦有一个Socket建立完成,他会通知Thread,然后Thread处理完数据再返回给客户端——这个过程是不阻塞的,这样就能让一个Thread处理更多的请求了。所以NIO的并发相对较高,比较适用于连接数高,流量低的情况

技术分享图片

BIO

技术分享图片

NIO

三大核心原理示意图

 技术分享图片

初识netty

原文:https://www.cnblogs.com/leihongzhi/p/14722290.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!