2021
08-31
08-31
浅析NIO系列之TCP
目录一、前言二、TCP特性三、IP网络层为何不保证数据包的可靠性四、TCP协议4.1、TCP包组成4.2、如何保证可靠性五、流量控制5.1、滑动窗口5.2、拥堵控制六、TCP状态七、消失的连接——TIME_WAIT一、前言在springboot2中,默认的web容器是netty,这说明“反应式”容器已经是大势所趋,无论是go语言的协从线程,还是java基于reactor线程模型,都是基于事件编程实现高并发的实例。在介绍NIO之前有必要了解下TCP协议,因为目...
继续阅读 >
目录1API2Netty的数据容器2.1工作原理内存池化非池化的堆内与堆外的ByteBuf池化的堆内与堆外的ByteBuf字节级操作派生缓冲区slice、slice(int,int)、retainedSlice、retainedSlice(int,int)duplicate、retainedDuplicatereadSlice、readRetainedSlice网络数据的基本单位永远是byte(字节)。JavaNIO提供ByteBuffer作为字节的容器,但该类过于复杂,有点难用。ByteBuf是Netty当中的最重要的工具类,它与JDK的ByteBuffer原...
一、NIOjava.nio全称javanon-blockingIO,是指jdk1.4及以上版本里提供的新api(NewIO),为所有的原始类型(boolean类型除外)提供缓存支持的数据容器,使用它可以提供非阻塞式的高伸缩性网络。二、三大组件NIO三大组件:Channel、Buffer、Selector1.Channel和BufferChannel是一个对象,可以通过它读取和写入数据。拿NIO与原来的I/O做个比较,通道就像是流,而且他们面向缓冲区(Buffer)的。所有数据都通过Buffer对象来...
一、BIO(BlockingIO,也被称作oldIO)同步阻塞模型,一个客户端连接对应一个处理线程对于每一个新的网络连接都会分配给一个线程,每隔线程都独立处理自己负责的输入和输出,也被称为ConnectionPerThread模式缺点:1、IO代码里read操作是阻塞操作,如果连接不做数据读写操作会导致线程阻塞,浪费资源2、如果线程很多,会导致服务器线程太多,压力太大,比如C10K问题所谓c10k问题,指的是服务器同时支持成千上万个客户端的问题,...