![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Netty源码阅读
YupyMan
热爱编程,享受生活
展开
-
Netty源码分析之Channel和Unsafe组件
类似于 java.nio包 的 Channel,Netty 提供了自己的 Channel 和其子类实现,用于异步 I/O操作 等。Unsafe 是 Channel 的内部接口,聚合在 Channel 中协助进行网络读写相关的操作,因为它的设计初衷就是 Channel 的内部辅助类,不应该被 Netty框架 的上层使用者调用,所以被命名为 Unsafe。Channel 组件Netty 的 Channel组件 是 Netty 对网络操作的封装,如 网络数据的读写,与客户端建立连接,主动关闭连接 等,也包含了原创 2020-09-01 22:37:45 · 305 阅读 · 0 评论 -
Netty源码解析之 ChannelPipeline和ChannelHandler
ChannelPipeline 的功能和作用ChannelPipeline 的事件处理ChannelPipeline 自定义拦截器构建 pipelineChannelPipeline 的主要特性ChannelPipeline 源码解析ChannelPipeline 对 ChannelHandler 的管理ChannelPipeline 的 inbound事件 和 outbound事件ChannelHandler 的功能和作用ChannelHandlerAdapterChannelHand原创 2020-08-30 14:11:23 · 452 阅读 · 0 评论 -
Netty高性能之道
作为一个高性能的 NIO通信框架,Netty 被广泛应用于大数据处理、互联网消息中间件、游戏和金融行业等。大多数应用场景对底层的通信框架都有很高的性能要求,作为综合性能最高的 NIO框架 之一,Netty 可以完全满足不同领域对高性能通信的需求。本章我们将从架构层对 Netty 的高性能设计和关键代码实现进行剖析,看 Netty 是如何支撑高性能网络通信的。RPC 调用性能模型分析传统 RPC...原创 2020-02-24 23:17:37 · 161 阅读 · 0 评论 -
Netty 的主要组件
ByteBuf 组件当我们进行数据传输的时候,往往需要使用到缓冲区,常用的缓冲区就是 JDK NIO类库 提供的 Buffer组件,7 种基本数据类型 ( Boolean 除外 ) 都有自己的缓冲区实现。对于 NIO编程 而言,我们主要使用的是 ByteBuffer。从功能角度而言,ByteBuffer 完全可以满足 NIO编程 的需要,但是由于 NIO编程 的复杂性,ByteBuffer 也...原创 2020-02-23 20:53:59 · 540 阅读 · 0 评论 -
基于Netty的客户端开发
相对于服务端,Netty客户端 的创建更加复杂,除了要考虑线程模型、异步连接、客户端连接超时等因素外,还需要对连接过程中的各种异常进行考虑。本章将对 Netty客户端 创建的关键流程和源码进行分析,以期读者能够了解客户端创建的细节。基于 Netty 创建客户端的流程分析Netty 为了向使用者屏蔽 NIO通信 的底层细节,在和用户交互的边界做了封装,目的就是为了减少用户开发工作量,降低开发难度...原创 2020-02-19 22:30:05 · 1249 阅读 · 0 评论 -
基于Netty的服务端开发
Netty 服务端创建源码分析当我们直接使用 JDK 的 NIO类库 开发基于 NIO 的异步服务端时,需要用到 多路复用器Selector、ServerSocketChannel、SocketChannel、ByteBuffer、SelectionKey 等,相比于传统的 BIO开发,NIO 的开发要复杂很多,开发出稳定、高性能的异步通信框架,一直是个难题。Netty 为了向使用者屏蔽 NIO...原创 2020-02-16 22:16:01 · 294 阅读 · 0 评论 -
Netty架构设计
本博文用于重点分析 Netty 的逻辑架构及关键的架构质量属性,希望有助于大家从 Netty 的架构设计中汲取营养,设计出高性能、高可靠性和可扩展的程序。Netty的三层架构设计Netty 采用了典型的三层网络架构进行设计和开发,其逻辑架构图如下所示。通信调度层 Reactor它由一系列辅助类完成,包括 Reactor线程 NioEventLoop 及其父类,NioSocketChan...原创 2020-02-16 14:25:28 · 372 阅读 · 0 评论 -
TCP粘包/拆包问题的解决之道
TCP粘包/拆包熟悉 TCP编程 的都知道,无论是服务端还是客户端,当我们读取或者发送消息的时候,都需要考虑 TCP底层 的 粘包/拆包机制。本篇博文,我们先简单了解 TCP粘包/拆包 的基础知识,然后来看看 Netty 是如何解决这个问题的。TCP粘包/拆包问题说明TCP 是个 “流” 协议,所谓流,就是没有界限的一串数据。TCP底层 并不了解上层(如 HTTP协议)业务数据的具体含义,它...原创 2020-02-15 20:06:53 · 240 阅读 · 0 评论 -
四种IO编程及对比
传统的BIO编程伪异步IO编程NIO编程三种IO的对比为何选择Netty原创 2020-02-15 15:33:38 · 289 阅读 · 0 评论 -
IO模型
Linux 网络 IO 模型简介Linux 的内核将所有外部设备都看做一个文件来操作,对一个文件的读写操作会调用内核提供的系统命令,返回一个fd (file descriptor,文件描述符)。而对一个 socket 的读写也会有相应的描述符,称为 socket fd (socket 描述符),描述符就是一个数字,它指向内核中的一个结构体(文件路径,数据区等一些属性)。根据UNIX网络编程对 I...原创 2020-02-11 23:13:05 · 89 阅读 · 0 评论 -
把被说烂的BIO、NIO、AIO再从头到尾说一遍
网上关于各种IO的博文已经多到飞起,如果你是大神,可以跳过我这个菜鸟的拙文,本博文没有什么特别NB的东西,只是集百家之长,并且以自己感到简单舒适的方式输出自己的理解,及学习过程中的经验。IO及基本概念1、流的概念和作用流:代表任何有能力产出数据的数据源对象或者是有能力接受数据的接收端对象。流的本质:数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。流的作用:为数据源和...原创 2019-11-21 20:55:38 · 500 阅读 · 0 评论