美文网首页
Netty为什么传输快

Netty为什么传输快

作者: java欧阳丰 | 来源:发表于2019-07-31 21:18 被阅读0次

HTTP服务器的原理:

  1  创建一个ServerSocket,监听并绑定一个端口
  2  一系列客户端来请求这个端口
  3  服务器使用Accept,获得一个来自客户端的Socket连接对象
 
  4  启动一个新线程处理连接
       1) 读Socket,得到字节流
       2) 解码协议,得到Http请求对象
       3) 处理Http请求,得到一个结果,封装成一个HttpResponse对象
       4) 编码协议,将结果序列化字节流
       5) 写Socket,将字节流发给客户端
 
  5  继续循环步骤3

HTTP服务器之所以称为HTTP服务器,是因为编码解码协议是HTTP协议,如果协议是Redis协议,那它就成了Redis服务器,如果协议是WebSocket,那它就成了WebSocket服务器,等等。

使用Netty你就可以定制编解码协议,实现自己的特定协议的服务器。

NIO速度优于BIO的原因:

1,在BIO中,等待客户端发数据这个过程是阻塞的,这样就造成了一个线程只能处理一个请求的情况,
而机器能支持的最大线程数是有限的,这就是为什么BIO不能支持高并发的原因。

2,而NIO中,当一个Socket建立好之后,Thread并不会阻塞去接受这个Socket,而是将这个请求交给Selector,
Selector会不断的去遍历所有的Socket,一旦有一个Socket建立完成,他会通知Thread,然后Thread处理
完数据再返回给客户端——这个过程是阻塞的,这样就能让一个Thread处理更多的请求了。

Netty为什么传输快

Netty的传输快其实也是依赖了NIO的一个特性——零拷贝。我们知道,Java的内存有堆内存、栈内存和字符串常量池等等,
其中堆内存是占用内存空间最大的一块,也是Java对象存放的地方,一般我们的数据如果需要从IO读取到堆内存,
中间需要经过Socket缓冲区,也就是说一个数据会被拷贝两次才能到达他的的终点,如果数据量大,就会造成不必要的资源浪费。
Netty针对这种情况,使用了NIO中的另一大特性——零拷贝,当他需要接收数据的时候,他会在堆内存之外开辟一块内存,
数据就直接从IO读到了那块内存中去,在netty里面通过ByteBuf可以直接对这些数据进行直接操作,从而加快了传输速度。


谢谢你的阅读,如果您觉得这篇博文对你有帮助,请点赞或者喜欢,让更多的人看到!祝你每天开心愉快!

相关文章

  • Netty为什么传输快

    HTTP服务器的原理: HTTP服务器之所以称为HTTP服务器,是因为编码解码协议是HTTP协议,如果协议是Red...

  • netty通信框架

    Netty入门教程——认识Netty彻底理解Netty,这一篇文章就够了 Netty特点 并发高 传输快 封装好 ...

  • Netty入门教程2——动手搭建HttpServer

    上一篇:Netty学习笔记1——认识Netty 在上一章中我们认识了netty,他有三大优点:并发高,传输快,封装...

  • 一、基本知识(BIO、NIO、AIO)

    一、什么是Netty? Netty提供了易于使用的API的客户端/服务器框架特点: 并发高 - NIO 传输快 -...

  • 2.netty传输

    Netty传输: NIO:非阻塞传输OIO:阻塞传输Local:JVM内部传输Embedded:测试Channel...

  • 游戏架构

    Netty整合SpringBoot并使用Protobuf进行数据传输 WebSocket 是什么原理?为什么可以实...

  • netty系列之:netty中的核心编码器base64

    简介 我们知道数据在netty中传输是以ByteBuf的形式进行的,可以说ByteBuf是netty的数据传输基础...

  • (3)深入理解 RPC 之传输篇

    一、RpcRequest 和 RpcResponse 二、Socket传输 三、Netty 传输 四、同步与异步 ...

  • 5.dubbo源码-编码&解码

    Netty编码申明 由于dubbo底层使用Netty作为网络传输框架,所以如果需要编码的话,可以通过继承netty...

  • Netty学习--传输

    传输迁移 未使用Netty 的阻塞网络编程 未使用Netty 的异步网络编程 使用Netty 的阻塞网络处理 使用...

网友评论

      本文标题:Netty为什么传输快

      本文链接:https://www.haomeiwen.com/subject/kpsxdctx.html