
Netty
文章平均质量分 79
lichunan
这个作者很懒,什么都没留下…
展开
-
Netty实现原理浅析
一、总体结构二、网络模型Netty是典型的Reactor模型结构,关于Reactor的详尽阐释,可参考POSA2。Reactor模式的典型实现:1、这是最简单的单Reactor单线程模型。Reactor线程是个多面手,负责多路分离套接字,Accept新连接,并分派请求到处理器链中。该模型适用于处理器链中业务处理组件能快速完成的场景。不过,这种单线程模型不能充分利用多核资源,所以实际转载 2015-04-10 13:42:32 · 560 阅读 · 0 评论 -
Netty长连接的事件处理顺序问题
最近的一个线上项目(认证服务器)老是出现服务延迟的情况。具体的问题描述:(1)客户端发送一个请求A(长连接),在服务器端的业务层需要20秒以上才能接收到。(2)客户端发送一个请求B(端连接),在服务器端的业务层可以迅速接收到。从现象大致知道问题出在服务器端的网络接收层,大量通过长连接发送过来的请求都堵塞在网络层得不到处理(在网络层排队,还没到应用层)。(友情提示:本博文章欢迎转载,转载 2015-04-10 20:06:11 · 1145 阅读 · 0 评论 -
Java NIO使用及原理分析(一)
最近由于工作关系要做一些Java方面的开发,其中最重要的一块就是Java NIO(New I/O),尽管很早以前了解过一些,但并没有认真去看过它的实现原理,也没有机会在工作中使用,这次也好重新研究一下,顺便写点东西,就当是自己学习Java NIO的笔记了。本文为NIO使用及原理分析的第一篇,将会介绍NIO中几个重要的概念。在Java1.4之前的I/O系统中,提供的都是面向流的I/O系统,系统一转载 2015-04-08 17:48:11 · 700 阅读 · 1 评论 -
Java NIO使用及原理分析(四)
在上一篇文章中介绍了关于缓冲区的一些细节内容,现在终于可以进入NIO中最有意思的部分非阻塞I/O。通常在进行同步I/O操作时,如果读取数据,代码会阻塞直至有可供读取的数据。同样,写入调用将会阻塞直至数据能够写入。传统的Server/Client模式会基于TPR(Thread per Request),服务器会为每个客户端请求建立一个线程,由该线程单独负责处理一个客户请求。这种模式带来的一个问题就是转载 2015-04-09 12:36:46 · 435 阅读 · 0 评论 -
Java NIO使用及原理分析(五)总结
一、java NIO和阻塞I/O的区别假如现在你对阻塞I/O已有了一定了解,我们知道阻塞I/O在调用InputStream.read()方法时是阻塞的,它会一直等到数据到来时(或超时)才会返回;同样,在调用ServerSocket.accept()方法时,也会一直阻塞到有客户端连接才会返回,每个客户端连接过来后,服务端都会启动一个线程去处理该客户端的请求。阻塞I/O的通信模型示意图如下:转载 2015-04-09 14:54:32 · 419 阅读 · 0 评论 -
Java NIO使用及原理分析(二)
在第一篇中,我们介绍了NIO中两个核心对象:缓冲区和通道,在谈到缓冲区时,我们说缓冲区对象本质上是一个数组,但它其实是一个特殊的数组,缓冲区对象内置了一些机制,能够跟踪和记录缓冲区的状态变化情况,如果我们使用get()方法从缓冲区获取数据或者使用put()方法把数据写入缓冲区,都会引起缓冲区状态的变化。本文为NIO使用及原理分析的第二篇,将会分析NIO中的Buffer对象。在缓冲区中,最重要的转载 2015-04-09 09:11:54 · 304 阅读 · 0 评论 -
Java NIO使用及原理分析(三)
在上一篇文章中介绍了缓冲区内部对于状态变化的跟踪机制,而对于NIO中缓冲区来说,还有很多的内容值得学习,如缓冲区的分片与数据共享,只读缓冲区等。在本文中我们来看一下缓冲区一些更细节的内容。缓冲区的分配在前面的几个例子中,我们已经看过了,在创建一个缓冲区对象时,会调用静态方法allocate()来指定缓冲区的容量,其实调用allocate()相当于创建了一个指定大小的数组,并把它包装为缓冲区转载 2015-04-09 10:33:45 · 340 阅读 · 0 评论 -
一切从ServerBootstrap开始
ServerBootstrap负责初始化netty服务器,并且开始监听端口的socket请求。bootstrap bootstrap = new ServerBootstrap( new NioServerSocketChannelFactory( Executors.newCachedThreadPool(),//boss线程池 Exe原创 2015-04-21 08:52:48 · 10669 阅读 · 7 评论 -
Java NIO:浅析I/O模型
也许很多朋友在学习NIO的时候都会感觉有点吃力,对里面的很多概念都感觉不是那么明朗。在进入Java NIO编程之前,我们先来讨论一些比较基础的知识:I/O模型。下面本文从同步和异步的概念说起,然后接着阐述了阻塞和非阻塞的区别,接着介绍了阻塞IO和非阻塞IO的区别,然后介绍了同步IO和异步IO的区别,接下来介绍了5种IO模型,最后介绍了两种和高性能IO设计相关的设计模式(Reactor和Proact转载 2015-04-28 22:00:19 · 379 阅读 · 0 评论