Netty 源码(一)Netty 组件简介
Netty 源码(一)Netty 组件简介
Netty 系列目录(https://www.cnblogs.com/binarylei/p/10117436.html)
一、Netty 架构

- Core:核心部分,是底层的⽹网络通⽤用抽象和部分实现。
- Extensible Event Model :可拓拓展的事件模型。Netty 是基于事件模型的⽹网络应⽤用框架。
- Universal Communication API :通⽤用的通信 API 层。Netty 定义了了⼀一套抽象的通⽤用通信
层的 API 。 - Zero-Copy-Capable Rich Byte Buffer :⽀支持零拷⻉贝特性的 Byte Buffer 实现。
- Transport Services:传输( 通信 )服务,具体的⽹网络传输的定义与实现。
- Socket & Datagram :TCP 和 UDP 的传输实现。
- HTTP Tunnel :HTTP 通道的传输实现。
- In-VM Piple :JVM 内部的传输实现。
- Protocol Support :协议支持。Netty 对于一些通用协议的编解码实现。例如:HTTP、Redis、DNS 等等。
二、Netty 核心组件
Netty 有如下几个核⼼心组件:
- Bootstrap & ServerBootstrap
- Channel
- ChannelFuture
- EventLoop & EventLoopGroup
- ChannelHandler
- ChannelPipeline
下图是 Channel、EventLoop、Thread、EventLoopGroup 之间的关系。

- 一个 EventLoopGroup 包含一个或多个 EventLoop。
- 一个 EventLoop 在它的生命周期内只能与一个 Thread 绑定。
- 所有有 EnventLoop 处理的 I/O 事件都将在它专有的 Thread 上被处理。
- 一个 Channel 在它的生命周期内只能注册与一个 EventLoop。
- 一个EventLoop 可被分配至一个或多个 Channel 。
当一个连接到达时,Netty 就会注册一个 Channel,然后从 EventLoopGroup 中分配一个 EventLoop 绑定到这个 Channel 上,在该 Channel 的整个生命周期中都是有这个绑定的 EventLoop 来服务的。
每天用心记录一点点。内容也许不重要,但习惯很重要!
Netty 源码(一)Netty 组件简介的更多相关文章
- Netty 源码解析: Netty 的 ChannelPipeline
ChannelPipeline和Inbound.Outbound 我想很多读者应该或多或少都有 Netty 中 pipeline 的概念.前面我们说了,使用 Netty 的时候,我们通 ...
- Netty源码—一、server启动(1)
Netty作为一个Java生态中的网络组件有着举足轻重的位置,各种开源中间件都使用Netty进行网络通信,比如Dubbo.RocketMQ.可以说Netty是对Java NIO的封装,比如ByteBu ...
- JAVA NIO 简介 (netty源码死磕1.1)
[基础篇]netty 源码死磕1.1: JAVA NIO简介 1. JAVA NIO简介 Java 中 New I/O类库 是由 Java 1.4 引进的异步 IO.由于之前老的I/O类库是阻塞I/ ...
- Pipeline模式(netty源码死磕6)
精进篇:netty源码死磕6 巧夺天工--Pipeline模式揭秘 1. 巧夺天工--Pipeline模式揭秘 1.1. Pipeline模式简介 管道的发名者叫,Malcolm Douglas M ...
- Pipeline(netty源码)
精进篇:netty源码死磕6 巧夺天工--Pipeline模式揭秘 1. 巧夺天工--Pipeline模式揭秘 1.1. Pipeline模式简介 管道的发名者叫,Malcolm Douglas M ...
- Netty源码分析(前言, 概述及目录)
Netty源码分析(完整版) 前言 前段时间公司准备改造redis的客户端, 原生的客户端是阻塞式链接, 并且链接池初始化的链接数并不高, 高并发场景会有获取不到连接的尴尬, 所以考虑了用netty长 ...
- Netty源码分析第2章(NioEventLoop)---->第1节: NioEventLoopGroup之创建线程执行器
Netty源码分析第二章: NioEventLoop 概述: 通过上一章的学习, 我们了解了Server启动的大致流程, 有很多组件与模块并没有细讲, 从这个章开始, 我们开始详细剖析netty的各个 ...
- EventLoop(netty源码死磕4)
精进篇:netty源码 死磕4-EventLoop的鬼斧神工 目录 1. EventLoop的鬼斧神工 2. 初识 EventLoop 3. Reactor模式回顾 3.1. Reactor模式的组 ...
- Netty 源码(ChannelHandler 死磕)
精进篇:netty源码死磕5 - 揭开 ChannelHandler 的神秘面纱 目录 1. 前言 2. Handler在经典Reactor中的角色 3. Handler在Netty中的坐标位置 4 ...
随机推荐
- Java中的字节流,字符流,字节缓冲区,字符缓冲区复制文件
一:创建方式 1.建立输入(读)对象,并绑定数据源 2.建立输出(写)对象,并绑定目的地 3.将读到的内容遍历出来,然后在通过字符或者字节写入 4.资源访问过后关闭,先创建的后关闭,后创建的先关闭 ...
- Docker容器管理及代码调用
这篇文章主要讲解Docker的容器管理,实现服务的部署,以Redis为例.我用的是Utuntu16.04,所以软件直接从库中下载,库中的Docker不是最新版本.但是不影响部署,如需要最新可在官网下载 ...
- Linux系统缓冲区溢出
Linux系统下穿越火线-缓冲区溢出 原理:crossfire 1.9.0 版本接受入站 socket 连接时存在缓冲区溢出漏洞. 工具: 调试工具:edb: ###python在漏洞溢出方面的渗透测 ...
- 解题10(LongestSubStrBetweenAB)
题目描述 查找两个字符串a,b中的最长公共子串.若有多个,输出在较短串中最先出现的那个. 输入描述: 输入两个字符串 输出描述: 返回重复出现的字符 示例1 输入 abcdefghijklmnop a ...
- Java Runtime
Runtime 类代表着Java程序的运行时环境,构造方法 private Runtime(){},采用单例模式,一个jvm只有一个Runtime实例对象,该类会被自动创建,我们可以通过Runtime ...
- https方式下 git push 每次都要输入密码的解决办法
转载自:http://git.oschina.net/oschina/git-osc/issues/2586 作者:Zoker https方式每次都要输入密码,按照如下设置即可输入一次就不用再手输 ...
- windows下python文件与文件夹操作
一.导入模块 imoprt os 二.获取python当前执行的目录 s=os.getcwd() 三.创建文件 import datetime import os dtime=datetime.dat ...
- POJ-2251.DungeonMaster(三维BFS)
做题时需要注意,爬楼有向上和向下爬之分... 本题大意:输入 l, r, c, 分别代表地牢的楼层数和每层地牢的长和宽,地牢由rock and point and source and key组成,你 ...
- Aladdin and the Flying Carpet
Aladdin and the Flying Carpet https://cn.vjudge.net/contest/288520#problem/C It's said that Aladdin ...
- JS判断变量类型
typeof v 只能用于识别基础类型,不能识别对象 v instanceof MyClass 判断类型 Object.prototype.toString.call(v.p) === "[ ...