【技术实现步骤摘要】
一种基于异步IO模型的网络编程框架系统及方法
本专利技术涉及计算机
,特别涉及一种基于异步IO模型的网络编程框架系统及方法。
技术介绍
在网络编程方面,操作系统为上层应用提供了几种网络模型,分别是:阻塞IO模型,非阻塞IO模型,IO复用模型,信号驱动模型,异步IO模型。在语言层面的API方面,Java语言在JDK1.0时提供了Socket套接字接口,提供了对阻塞IO模型的支持。在JDK1.4版本的时候提供了对非阻塞IO模型的支持。在JDK1.7版本的时候提供了对异步IO模型的支持。阻塞IO模型实现和应用起来较为简单,但是在并发量较高的时候,程序的整体性能不够高,开销也比较大。因为阻塞IO模型,针对每一个连接都需要消耗一个线程,而在长连接的情况下,对服务器的线程消耗会很大。IO复用模型解决了阻塞IO模型在实现中对资源消耗大的问题。通过IO复用技术,可以实现较少的线程支撑大量的接入链接。在高并发和大量接入的场景中,IO复用模型的性能较高。然而IO复用模型在实现上比较复杂,需要用户手动处理数据的读写操作。
技术实现思路
有鉴于此,本专利技术的目的在于提供一种基于异步IO模型的网络编程框架系统及方法,以解决上述问题。本专利技术实施例提供了一种基于异步IO模型的网络编程框架系统,包括:通道层,用于接收待处理的原始数据;管道层,用于从所述通道层读取所述原始数据,并通过保存的多个处理器节点对所述原始数据进行操作;其中,所述多个处理器节点通过前向指针和后向指针首尾相连以形成责 ...
【技术保护点】
1.一种基于异步IO模型的网络编程框架系统,其特征在于,包括:/n通道层,用于接收待处理的原始数据;/n管道层,用于从所述通道层读取所述原始数据,并通过保存的多个处理器节点对所述原始数据进行操作;其中,所述多个处理器节点通过前向指针和后向指针首尾相连以形成责任链形式的链式处理模型,且每个处理器节点绑定有一个工作者线程,使得所述处理器节点的方法执行处于其绑定的工作者线程中。/n
【技术特征摘要】
1.一种基于异步IO模型的网络编程框架系统,其特征在于,包括:
通道层,用于接收待处理的原始数据;
管道层,用于从所述通道层读取所述原始数据,并通过保存的多个处理器节点对所述原始数据进行操作;其中,所述多个处理器节点通过前向指针和后向指针首尾相连以形成责任链形式的链式处理模型,且每个处理器节点绑定有一个工作者线程,使得所述处理器节点的方法执行处于其绑定的工作者线程中。
2.根据权利要求1所述的基于异步IO模型的网络编程框架系统,其特征在于,
所述通道层提供的通道为读写双向;则对管道层:
在读取时,将其视为源头是对通道层的原始数据的读取,尽头是处理器节点的一个责任链的链式处理模型;
在写出时,将其视为存在处理、转化、编码、写出形成的一个责任链形式的链式处理模型。
3.根据权利要求1所述的基于异步IO模型的网络编程框架系统,其特征在于,每个处理器节点均处于一个处理器上下文的包裹之中,则对于每个处理器节点:
判断调用方法的线程是否与处理器上下文绑定的工作者线程;
若是,则直接执行对应的方法内容;
若不是,则将这个调用包装为一个可运行对象,并将所述可运行对象投递到工作者线程的队列中,等待被处理。
4.根据权利要求1所述的基于异步IO模型的网络编程框架系统,其特征在于,还包括:
自适应IoBuffer模块,用于作为贯穿网络编程框架系统的数据承载容器以及连通网络编程框架系统的API与JavaAIO中的API;其中,所述自适应IoBuffer模块具有读取标记以及写入标记,并根据两个标记的切换实现读写的状态翻转;
分配器,用于完成对IoBuffer的申请。
5.根据权利要求4所述的基于异步IO模型的网络编程框架系统,其特征在于,还包括:
读取完成器,用于在通道层上启动监听以及在监听到通道层读取到数据后执行对应的处理逻辑;
其中,启动监听的过程具体为:
根据初始配置大小,从分配器申请IoBuffer实例;
将申请的IoBuffer实例设置到ReadEntry的对象属性,并使用IoBuffer实例创建可写ByteBuffer,设置到ReadEntry属性;其中,ReadEntry类用于存储当前正在使用的IoBuffer和其生成出来的ByteBuffer;
使用所述ByteBuffer进行读取API调用,并将ReadEntry作为附件传入;
其中,执行对应的处理逻辑的过程具体为:
判断当前读取的数据的长度是否为-1;
若是,则将ReadEntry中的IoBuffer执行free调用来释放空间,并执行通道关闭方法;
若否,则判断当前读取的数据的长度是否大于0;
若大于,则IoBuffer中的写入标记增加本次读取的长度,并将IoBuffer实例传递到管道层上,以触发管道层的读取方法;
若不大于,则将IoBuffer释放;
根据自适应算法判断本次需要的IoBuffer的容量大小,并调用分配器分配该大小的IoBuffer;
将所述IoBuffer设置到ReadEntry中,并使用所述IoBuffer创建可写ByteBuffer实例,作为通道层读取的容器载体,将ReadEntry作为附件传入,执行通道读取。
6.根据权利要求5所述的基于异步IO...
【专利技术属性】
技术研发人员:林斌,施建安,庄一波,赵友平,孙志伟,
申请(专利权)人:厦门市易联众易惠科技有限公司,
类型:发明
国别省市:福建;35
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。