当我们的应用程序需要接受比预期多很多的并发连接的时候,我们需要从阻塞传输切换到非阻塞传输上去,如果是我们的网络编程是基于jdk提供的API进行开发地的话,这种传输模式的切换几乎要我们重构整个网络传输相关的代码,然而,Netty为它所有的传输实现了一个通用的API,这使得我们能更加简单的从阻塞传输切换到非阻塞传输的编程方式上去. 1.传输迁移 首先,我们来看一下一个使用netty去实现阻塞传输的例子,这个应用程序简单的接受连接,向客户端写hi,然后再关闭连接.代码如下: public class…
Netty是一款异步事件驱动的网络应用程序框架,支持快速的开发可维护的高性能的面向协议的服务器和客户端.在网络编程中,阻塞.非阻塞.同步.异步经常被提到.同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别? 常见的I/O模型有如下几种: 我们举一个场景来说明上面各是什么意思: 周末我和宝宝逛街,中午饿了,我们准备去吃饭.周末人多,吃饭需要排队,我和宝宝有以下几种方案: (1…
在上一篇博客中,我们给出了java高性能网络编程的技术基础,也简单的介绍了netty的核心构件,在这一篇博客中,我们将更加详细的研究netty的各个组件,并且密切关注它们是如何通过协作来支撑这些体系结构上的最佳实践的. 首先,我们会对Channel,EventLoop和ChannelFuture类进行讨论,这些类结合在一起,可以被认为是netty网络抽象的代表: (1)Channel - Socket 表示基本的I/O操作,在基于java的网络编程中,基本构造是class socket.nett…
        在这一章我们将讨论Netty的10个核心类.清楚了解他们的结构对使用Netty非常实用.可能有一些不会再工作中用到.可是也有一些非经常常使用也非常核心,你会遇到. Bootstrap or ServerBootstrap EventLoop EventLoopGroup ChannelPipeline Channel Future or ChannelFuture ChannelInitializer ChannelHandler        本节的目的就是介绍以上这些概念.帮…
本章内容 Transports(传输) NIO(non-blocking IO,New IO), OIO(Old IO,blocking IO), Local(本地), Embedded(嵌入式) Use-case(用例) APIs(接口) 网络应用程序一个非常重要的工作是数据传输.数据传输的过程不一样取决是使用哪种交通工具,可是传输的方式是一样的:都是以字节码传输. Java开发网络程序数据传输的过程和方式是被抽象了的,我们不须要关注底层接口.仅仅须要使用Java API或其它网络框架如Net…
一.前言 上一篇文章我们提到 Netty 的核心组件是 Channel.回调.Future.ChannelHandler.EventLoop,这篇文章主要是对 Channel (Netty传入和传出数据的载体)做一些详细的讲解,以及介绍下 Netty 内置的传输类型. 二.传输的核心 传输 API 的核心是 interface Channel ,她被用于所有的 I/O 操作.Channel 类的层次结构如图所示: 如图,每个Channel 都会被分配一个 ChannelPipeline 和 Ch…
声明:这篇文章是记录读书过程中的知识点,并加以归纳总结,成文.文中图片.代码出自<Netty in action>. 1. 为什么用Netty? 每个框架的流行,都一定有它出众的地方.Netty就是为了网络编程使用,它封装了大量的通讯的底层内容,简化开发者的工作量,让开发者的精力全都放于业务上,而且它能高效的处理网络通讯的东西.很多大的公司都使用Netty作为通讯框架,因此,使这个框架更加完善. 2. OIO(阻塞I/O)与NIO(非阻塞I/O)与AIO(异步I/O) 2.1 阻塞I/O 为什…
http://blog.csdn.net/abc_key/article/details/38041143 本章介绍 Codec,编解码器 Decoder,解码器 Encoder,编码器 Netty提供了编解码器框架,使得编写自己定义的编解码器非常easy,而且也非常easy重用和封装. 本章讨论Netty的编解码器框架以及使用. 7.1 编解码器Codec         编写一个网络应用程序须要实现某种编解码器.编解码器的作用就是讲原始字节数据与自己定义的消息对象进行互转.网络中都是以字节码…
本章介绍 ByteBuf ByteBufHolder ByteBufAllocator 使用这些接口分配缓冲和运行操作 每当你须要数据传输时,它必须包括一个缓冲区.Java NIO API自带的缓冲区类是相当有限的,没有经过优化,使用JDK的ByteBuffer操作更复杂.缓冲区是一个重要的组建,它是API的一部分. Netty提供了一个强大的缓冲区实现用于表示一个字节序列,并帮助你操作原始字节或自己定义的POJO.Netty的ByteBuf相当于JDK的ByteBuffer,ByteBuf的作…
本章介绍 获得Netty4最新的版本号 设置执行环境,以构建和执行netty程序 创建一个基于Netty的server和client 拦截和处理异常 编制和执行Nettyserver和client 本章将简介Netty的核心概念,这个狠心概念就是学习Netty是怎样拦截和处理异常.对于刚開始学习netty的读者.利用netty的异常拦截机制来调试程序问题非常有帮助.本章还会介绍其它一些核心概念.如server和client的启动以及分离通道的处理程序.本章学习一些基础以便后面章节的深入学习. 本…