netty
文章平均质量分 83
爱琴孩
扫盲+科普+解惑,愿天下程序员每天少掉头发
展开
-
Netty之EventLoop
为什么说 EventLoop 是 Netty 的精髓呢?因为 EventLoop 是 Netty Reactor 线程模型的核心处理引擎。要想明白 Netty 为什么可以轻松处理成千上万规模的客户端连接,就必须要掌握 EventLoop。由于本篇是入门篇,所以我们对其不会讲解很深入,掌握它的原理即可,为后面的进阶和源码分析打下基础。EventLoop 从字面上来看就是 event + loop,也就是事件循环,事件就是 I/O 事件,循环则可以理解为 while(true)。转载 2023-12-09 21:50:51 · 377 阅读 · 0 评论 -
Reactor 线程模型
要想弄明白 Netty 的 EventLoop,我们就必须先理解 Reactor 线程模型,Netty 高性能的奥秘就在于 Reactor 线程模型。线程模型的优劣直接决定了系统的性能,一个好的线程模型比不好的线程模型性能会高出好多倍。而目前主流的网络框架选择的线程模型几乎都是 I/O 多路复用的方案,Netty 作为其中的佼佼者更是演绎地淋漓尽致。转载 2023-12-09 21:36:50 · 78 阅读 · 0 评论 -
NIO,BIO ,AIO
Netty 的高性能架构,是基于一个网络编程设计模式 Reactor 进行设计的。现在,大多数与 I/O 相关的组件,都会使用 Reactor 模型,比如 Tomcat、Redis、Nginx 等,可见 Reactor 应用的广泛性。Reactor 是 NIO 的基础。为什么 NIO 的性能就能够比传统的阻塞 I/O 性能高呢?我们首先来看一下传统阻塞式 I/O 的一些特点。转载 2023-12-08 22:33:10 · 46 阅读 · 0 评论 -
彻底理解Netty-----内部执行流程
服务端:1、创建ServerBootStrap实例2、设置并绑定Reactor线程池:EventLoopGroup,EventLoop就是处理所有注册到本线程的Selector上面的Channel3、设置并绑定服务端的channel4、5、创建处理网络事件的ChannelPipeline和handler,网络时间以流的形式在其中流转,handler完成多数的功能定制:比如编...转载 2018-12-02 16:12:06 · 4173 阅读 · 2 评论 -
彻底理解Netty-----零拷贝
传统意义的拷贝是在发送数据的时候,传统的实现方式是:1. File.read(bytes)2. Socket.send(bytes)这种方式需要四次数据拷贝和四次上下文切换:1. 数据从磁盘读取到内核的read buffer2. 数据从内核缓冲区拷贝到用户缓冲区3. 数据从用户缓冲区拷贝到内核的socket buffer4. 数据从内核的socket buffer拷...转载 2018-12-02 16:07:58 · 2749 阅读 · 0 评论 -
彻底理解Netty-----TCP 粘包/拆包
前言在彻底理解Netty-----Netty简介中大致介绍了netty框架以及NIO和Reactor线程模型。这里我们一起来学习下TCP 粘包/拆包。看看Netty是如下处理粘包和拆包的。为什么要粘包拆包先看如下代码,这个代码是使用netty在client端重复写100次数据给server端,ByteBuf是netty的一个字节容器,里面存放是的需要发送的数据:从client端...转载 2018-12-02 16:03:52 · 687 阅读 · 0 评论 -
彻底理解Netty-----Netty简介
Netty到底是什么有了Netty,你可以实现自己的HTTP服务器,FTP服务器,UDP服务器,RPC服务器,WebSocket服务器,Redis的Proxy服务器,MySQL的Proxy服务器等等。我们回顾一下传统的HTTP服务器的原理:1、创建一个ServerSocket,监听并绑定一个端口2、一系列客户端来请求这个端口3、服务器使用Accept,获得一个来自客户端的Soc...转载 2018-12-02 15:45:33 · 467 阅读 · 0 评论 -
白话BIO,NIO,AIO
前言对于java中传统的IO,相必大家都经常接触,但是涉及到应对高并发的NIO,和jdk1.7刚出来的AIO,有些小伙伴可能就不太清楚了,这里和大家一起来学习一下BIO,NIO,AIO。从整体上对这三者有个大致的概念理解。要理解清楚上面的BIO,NIO,AIO,我们要先清楚什么是同步,异步,阻塞以及非阻塞。同步,异步,阻塞,非阻塞同步和异步是针对应用程序和内核的交互而言的。 同步...转载 2018-04-18 13:48:15 · 420 阅读 · 0 评论 -
Java NIO Buffer
Java NIO Buffers被用于和NIO Channels交互,正如你所知道的,数据是从channels中读取到Buffers中,从Buffers中写入到channels。 Buffer本质上是一块你可以读写数据的内存,这块内存被NIO Buffer 对象包装,这个对象提供了一系列的方法来使得和内存的交互更简单。基础Buffer的使用使用Buffer通过下面四个步骤来读写数据Write d翻译 2017-09-04 15:41:09 · 368 阅读 · 0 评论 -
Java NIO Channel
Java NIO和流有点相似,但是又不同。通过Channels,你既可以读也可以写,但是流只能是单向的,只能读或者写。Channles可以实现异步的读写Channels总是读取到Buffer中,从Buffer中写出。正如上面所提到的,你可以通过Channel将数据读取到Buffers,也可以将数据从Buffers通过Channel写出。如下图所示 Channel Implementatio翻译 2017-09-04 13:49:16 · 179 阅读 · 0 评论 -
java NIO简介
java NIO中包含下面三个核心组件Channels 通道Buffers 缓冲区Selectors 选择器 除了上面的三个,NIO中还有其他的组件。但是Channels,Buffers,Selectors是Api中的核心组件,剩下的组件像Pile和FileLock可以看做是上面的三个核心组件的共同工具类。所以,这里主要是针对上面的三个核心组件,其他的非核心组件可以去其他教程去学习。翻译 2017-09-04 11:33:21 · 282 阅读 · 0 评论