netty权威指南
netty权威指南,原著:李林锋
陈彬_smile
待到山花烂漫时,她在丛中笑。
展开
-
Netty:Channel和Unsafe
1.Channel的功能介绍1.1 成员变量定义/** * A skeletal {@link Channel} implementation. */public abstract class AbstractChannel extends DefaultAttributeMap implements Channel { private static final InternalLogger logger = InternalLoggerFactory.getIns原创 2021-07-08 22:00:16 · 130 阅读 · 1 评论 -
Netty:ByteBuf和相关辅助类(二)
1.AbstractReferenceCountedByteBuf从类的名字就可以看出该类主要是对引用进行计数,类似JVM内存回收的对象引用计数器,用于跟踪对象的分配和销毁,做自动内存回收。/** * Abstract base class for {@link ByteBuf} implementations that count references. */public abstract class AbstractReferenceCountedByteBuf extends Abst原创 2020-09-13 17:39:48 · 123 阅读 · 0 评论 -
Netty:ByteBuf和相关辅助类
1.ByteBuf功能说明数据传输需要使用缓冲区。JDK NIO的ByteBuffer有其局限性,缺点如下:ByteBuffer长度固定,一旦分配完成,它的容量不能动态扩展和收缩,当需要编码的POJO对象大于ByteBuffer的容量时,会发生索引越界异常;ByteBuffer只有一个标志位置的指针position,读写的时候需要手工调用flip()和rewind()等,使用者必须小心谨慎的处理这些API,否则很容易导致程序处理失败;ByteBuffer的API功能有限,一些高级和...原创 2020-09-12 23:31:17 · 242 阅读 · 0 评论 -
Netty:可靠性
Netty应用场景:1.RPC框架的基础网络通信框架:主要用于分布式节点之间的通信和数据交换,在各个业务领域均有典型的应用,例如阿里的分布式框架Dubbo,消息队列Rocket MQ,大数据处理Hadoop的基础通信和序列化框架Avro。2.私有协议的基础通信框架:Thrift协议,Dubbo协议等;3.公有协议的基础通信框架:HTTP协议,SMPP协议。链路的有效性检测从技术层面看,要解决链路可靠性问题,必须周期性的对链路进行有效性检测。目前最流行和通用的做法就是心跳检测。心跳检测原创 2020-09-09 22:37:23 · 178 阅读 · 0 评论 -
Netty:高性能之道
1.RPC调用性能模型分析传统RPC调用性能差的三宗罪1.网络传输方式问题。传统的RPC框架或者基于RMI等方式的远程服务调用采用了同步阻塞I/O,当客户端的并发压力大或者网络延时增大之后,同步阻塞I/O会由于频繁的wait导致I/O线程经常性的阻塞,由于线程无法高效工作,I/O处理能力自然下降。采用BIO通信模型的服务端,通常由一个独立的Acceptor线程负责监听客户端连接,接收客户端连接之后,为其创建一个新的线程处理请求消息,处理完成之后,返回应答消息给客户端,线程销毁,这就是一请求一应答原创 2020-09-09 15:18:38 · 157 阅读 · 0 评论 -
Netty:高级特性
1.Netty逻辑架构1.1 Reactor通信调度层它由一系列辅助类完成,包括Reactor线程NioEventLoop及其父类,NioSocketChannel/NioServerSocketChannel及其父类,ByteBuffer以及由其衍生出来的各种Buffer,Unsafe以及其衍生出来的各种内部类等。该层的主要职责就是监听网络的读写和连接操作,负责将网络层的数据读取到内存缓冲区中,然后触发各种网络事件,例如连接创建,连接激活,读事件,写事件等,将这些事件触发到PipeLine中,原创 2020-09-09 10:59:20 · 241 阅读 · 0 评论 -
Netty:TCP粘包/拆包问题解决之道
1.TCP粘包/拆包TCP是一个“流”协议,流,就是没有界限的一串数据。TCP底层并不了解上层业务数据的具体含义,它会根据TCP缓冲区的实际情况进行包的划分,所以在业务上认为,一个完整的包可能会被TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送,这就是所谓的TCP粘包和拆包问题。2.粘包问题的解决策略由于底层TCP无法理解上层的业务数据,所以底层无法保证数据包不被拆分和重组,这个问题只能通过上层的应用协议栈设计来解决,根据业界主流的解决方案,归纳如下:1.消息定长,例原创 2020-09-07 21:47:58 · 255 阅读 · 0 评论 -
Netty简介
1.Netty是什么Netty是一个高性能,异步事件驱动的NIO框架,基于Java NIO提供的API实现。它提供对TCP,UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用户可以方便的主动获取或者通过通知获得IO操作结果。2.Netty应用场景作为当前最流行的NIO框架,Netty在互联网领域,大数据分布式计算领域,游戏行业,通信行业等获得了广泛的应用,业界主流RPC框架,也是用Netty来构建高性能的异步通信能原创 2020-09-07 11:07:05 · 65 阅读 · 0 评论