多Reactor

原创 2016年05月30日 15:10:13

       这两天发现了一个bug,一个nio的server,多Reactor , 设置的非阻塞模式, 当前channel可写时,代码 直接一句 channel.write( wBuf );  将当前连接上处理好的响应包一个一个写出去.   因为这个写是非阻塞的, channel.write的时候 如果当前内核socket缓冲区的空间比当前这个输出buffer要小 ,这个方法会也会马上返回,但是实际上数据没写完.(如果是阻塞模式的,就会等待直到这个包全部被写到socket缓冲区).

     修改了下代码,包没写完,再次注册read事件 .下次再写. 

     int bytesWritten = ((SocketChannel)channel).write( wBuf );

    // Socket buffer is full.

       if (wBuf.remaining() > 0) 
{
key.interestOps(SelectionKey.OP_READ | SelectionKey.OP_WRITE) ; 
key.selector().wakeup();
break;
}


     顺便介绍下这个多Reactor  

     每个Reactor   ,一个select线程, 负责数据的读和写,读到数据后交由一个workThread做业务,再将response包写入当前session的buffer, select主线程负责write到channel.

版权声明:本文为博主原创文章,未经博主允许不得转载。

网络编程基础(5) : IO多路复用(多Reactor)(主从式Reactor)

1. 介绍 本篇文章将网络编程基础(4) : IO多路复用(多线程)中的单Reactor+多线程网络模型做了改进, 把Reactor拆成两个角色Main Reactor及Sub Reactor,以提升...
  • jordan5226
  • jordan5226
  • 2016年03月31日 15:17
  • 1679

Scalable IO in Java——多Reactor的代码实现

首页 分类目录 文章归档 联系我 友情链接 Scalable IO in Java——多Reactor的代码实现  Published: 2015-...
  • yangzishiw
  • yangzishiw
  • 2016年11月20日 17:09
  • 1231

Java NIO之多个Selector的实现

欢迎大家讨论,我也是接触时间不长,有问题欢迎大家指正。欢迎转载,转载请注明出处 楔子 最近在研究JAVA NIO的相关知识,发现网上多是三种类型的研究文章,一是单Reactor单Selecto...
  • jjzhk
  • jjzhk
  • 2014年09月26日 07:15
  • 15000

细说Reactor模式

今天在看书的时候看到了一个新的设计模式——Reactor模式,这个模式是出现在NIO中,至于这到底是个什么模式,今天我们来细说一下。 reactor模式是javaNIO非堵塞技术的实现原理,...
  • u010168160
  • u010168160
  • 2016年11月03日 10:31
  • 10057

IO多路复用和Reactor模式

1. Reactor和Preactor模式 Reactor用于同步IO,Preactor用于异步IOReactor通常会和Connector模式一起使用,进一步解耦连接的建立与连接以后的逻辑 2....
  • working_brain
  • working_brain
  • 2014年07月21日 10:32
  • 1840

【Netty源码分析】Reactor线程模型

1. 背景1.1. Java线程模型的演进1.1.1. 单线程时间回到十几年前,那时主流的CPU都还是单核(除了商用高性能的小机),CPU的核心频率是机器最重要的指标之一。在Java领域当时比较流行的...
  • qq924862077
  • qq924862077
  • 2016年11月24日 09:20
  • 1806

Spring reactor框架简介

Spring社区上月发布了基于事件驱动的异步框架 reactor。当前reactor还在密集研发中,代码几天大变样,非常的不稳定,这2周还完全重写了它自己的reactor-tcp。sample cod...
  • luqiaolong
  • luqiaolong
  • 2015年10月18日 00:16
  • 1628

Reactor模式,两种高效的并发模式

Reactor释义"反应堆",是一种事件驱动机制,和普通函数调用的不同之处在于,Reactor逆置了事件处理流程,应用程序需要提供相应接口并注册到Reactor上,如果相应的时间发生,Reactor将...
  • hello_bravo_
  • hello_bravo_
  • 2016年09月20日 21:10
  • 1131

Reactor构架模式及框架概述

本文转载自:http://www.cnblogs.com/hzbook/archive/2012/07/19/2599698.html Reactor框架是ACE各个框架中最基础的一个框架,其他框架...
  • xcwll314
  • xcwll314
  • 2015年08月19日 17:28
  • 1121

服务器Reactor架构浅析

Reactor模式是一个架构模式,它主要解决的问题是高并发场景下的服务器的性能问题。原来的服务器与客户端的链接是一对一的,也就是说一个客户端socket接到后,对应一个线程去接收和处理,这种模式的好处...
  • drdairen
  • drdairen
  • 2016年12月20日 21:41
  • 483
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:多Reactor
举报原因:
原因补充:

(最多只允许输入30个字)