Netty中的三种Reactor(反应堆)
摘要:目录: Reactor(反应堆)和Proactor(前摄器) 《I/O模型之三:两种高性能 I/O 设计模式 Reactor 和 Proactor》 《【转】第8章 前摄器(Proactor):用于为异步事件多路分离和分派处理器的对象行为模式》 《Java NIO系列教程(八)JDK AIO编程》-
阅读全文
posted @
2016-01-24 00:28
duanxz
阅读(15955)
推荐(6) 编辑
I/O通信模型(BIO,NIO,AIO)
摘要:一、传统的BIO 网络编程的基本模型是Client/Server模型,也就是两个进程之间进行相互通信,其中服务端提供位置信息(绑定的IP地址和监听端口),客户端通过连接操作向服务端监听的地址发起连接请求,通过三次握手建立连接,如果连接建立成功,双方就可以通过网络套接字(Socket)进行通信。 在基
阅读全文
posted @
2016-01-19 19:58
duanxz
阅读(1324)
推荐(0) 编辑
netty中的ByteBuf
摘要:网络数据的基本单位总是字节。Java NIO 提供了 ByteBuffer 作为它 的字节容器,但是这个类使用起来过于复杂,而且也有些繁琐。 Netty 的 ByteBuffer 替代品是 ByteBuf,一个强大的实现,既解决了 JDK API 的局限性, 又为网络应用程序的开发者提供了更好的 A
阅读全文
posted @
2014-05-14 21:27
duanxz
阅读(30747)
推荐(8) 编辑
netty支持的协议
摘要:流经网络的数据总是具有相同的类型:字节。这些字节是如何流动的主要取决于我们所说的 网络传输--一个帮助我们抽象底层数据传输机制的概念。用户并不关心这些细节;他们只想确保他们的字节被可靠地发送和接收。 jdk提供了从阻塞传输到非阻塞传输及异步AIO等,在使用时会因为网络 API 的截然不同而遇到问题。
阅读全文
posted @
2014-05-14 21:26
duanxz
阅读(8583)
推荐(0) 编辑
Netty组件
摘要:一、Channel、EventLoop 和ChannelFuture 这些类合在一起,可以被认为是Netty 网络抽象的代表: Channel—Socket; EventLoop—控制流、多线程处理、并发; ChannelFuture—异步通知。 Channel 接口 基本的I/O 操作(bind(
阅读全文
posted @
2014-05-14 21:25
duanxz
阅读(704)
推荐(0) 编辑
netty中的EventLoop和EventLoopGroup
摘要:Netty框架的主要线程就是I/O线程,线程模型设计的好坏,决定了系统的吞吐量、并发性和安全性等架构质量属性。 一、Netty的线程模型 在讨论Netty线程模型时候,一般首先会想到的是经典的Reactor线程模型,尽管不同的NIO框架对应Reactor模式的实现存在差异,但本质上还是遵循了Reac
阅读全文
posted @
2014-05-14 21:24
duanxz
阅读(6131)
推荐(0) 编辑
netty中的Channel、ChannelPipeline
摘要:一、Channel与ChannelPipeline关系 每一个新创建的 Channel 都将会被分配一个新的 ChannelPipeline。这项关联是永久性 的;Channel 既不能附加另外一个 ChannelPipeline,也不能分离其当前的。在 Netty 组件 的生命周期中,这是一项固定
阅读全文
posted @
2014-05-14 21:23
duanxz
阅读(1352)
推荐(0) 编辑
EventLoop 与 Channel 的关联
摘要:Netty 中, 每个 Channel 都有且仅有一个 EventLoop 与之关联, 它们的关联过程如下: 从上图中我们可以看到, 当调用了 AbstractChannel#AbstractUnsafe.register 后, 就完成了 Channel 和 EventLoop 的关联. regis
阅读全文
posted @
2014-05-14 21:23
duanxz
阅读(1127)
推荐(0) 编辑
netty中的引导Bootstrap服务端
摘要:引导一个应用程序是指对它进行配置,并使它运行起来的过程。 一、Bootstrap 类 引导类的层次结构包括一个抽象的父类和两个具体的引导子类,如图 8-1 所示 服务器致力于使用一个父 Channel 来接受来自客户端的连接,并创建子 Channel 以用于它们之间的通信; 而客户端将最可能只需要一
阅读全文
posted @
2014-05-14 21:23
duanxz
阅读(694)
推荐(0) 编辑
netty中的引导Bootstrap客户端
摘要:一、Bootstrap Bootstrap 是 Netty 提供的一个便利的工厂类, 我们可以通过它来完成 Netty 的客户端或服务器端的 Netty 初始化.下面我以 Netty 源码例子中的 Echo 服务器作为例子, 从客户端和服务器端分别分析一下Netty 的程序是如何启动的. 客户端部分
阅读全文
posted @
2014-05-14 21:22
duanxz
阅读(570)
推荐(0) 编辑
java内存模型JMM
摘要:现代CPU 架构的形成 硬件的效率与一致性 Java 内存模型(JMM) 主内存与工作内存 主内存与工作内存交互协议 JMM对于volatile型变量的特殊规则 JMM针对long和double型变量的特殊规则 原子性、可见性与有序性 先行发生原则 1、概述:现代CPU架构的形成 一切从冯洛伊曼计算
阅读全文
posted @
2014-05-14 21:21
duanxz
阅读(1116)
推荐(0) 编辑
Netty Client 重连实现
摘要:当我们用Netty实现一个TCP client时,我们当然希望当连接断掉的时候Netty能够自动重连。Netty Client有两种情况下需要重连: Netty Client启动的时候需要重连 在程序运行中连接断掉需要重连。 对于第一种情况,Netty的作者在stackoverflow上给出了解决方
阅读全文
posted @
2013-12-12 10:17
duanxz
阅读(1801)
推荐(0) 编辑
netty中的UDP
摘要:UDP 提供了向多个接收者发送消息的额外传输模式: 多播——传输到一个预定义的主机组; 广播——传输到网络(或者子网)上的所有主机。 本示例应用程序将通过发送能够被同一个网络中的所有主机所接收的消息来演示 UDP 广播的使用。为此,我们将使用特殊的受限广播地址或者零网络地址 255.255.255.
阅读全文
posted @
2013-12-11 16:29
duanxz
阅读(3278)
推荐(0) 编辑
ByteBuf 类——Netty 的数据容器
摘要:1.堆缓冲区 2.直接缓冲区 3.复合缓冲区 —CompositeByteBuf——实现了这个模式,它提供了一 个将多个缓冲区表示为单个合并缓冲区的虚拟表示 适用于 JDK 所使用的一种称为分散/收集 I/O(Scatter/Gather I/O)的技术,定义为“一种输入和 输出的方法,其中,单个系
阅读全文
posted @
2013-12-11 15:06
duanxz
阅读(671)
推荐(0) 编辑
netty中的websocket
摘要:使用WebSocket 协议来实现一个基于浏览器的聊天室应用程序,图12-1 说明了该应用程序的逻辑: (1)客户端发送一个消息;(2)该消息将被广播到所有其他连接的客户端。 WebSocket 在从标准的HTTP或者HTTPS协议切换到WebSocket时,将会使用一种称为升级握手①的机制。因此,
阅读全文
posted @
2013-12-11 11:27
duanxz
阅读(3889)
推荐(0) 编辑
Netty实现简单HTTP服务器
摘要:netty 主类: 测试: 用浏览器访问:http://localhost:8080/ netty构建的文件服务器 1、首先加入的是HTTP请求消息解码器 ch.pipeline().addLast("http-decoder", new HttpRequestDecoder()); 2、第2添加H
阅读全文
posted @
2013-12-11 11:26
duanxz
阅读(1715)
推荐(0) 编辑
Netty实现原理浅析
摘要:1、总体结构 先放上一张漂亮的Netty总体结构图,下面的内容也主要围绕该图上的一些核心功能做分析,但对如Container Integration及Security Support等高级可选功能,本文不予分析。 Netty架构分析 Netty 采用了比较典型的三层网络架构进行设计,逻辑架构图如下所
阅读全文
posted @
2013-12-11 11:25
duanxz
阅读(2465)
推荐(0) 编辑