[发明专利]一种针对SystemV消息队列的I/O复用方法有效

专利信息
申请号: 201410266122.5 申请日: 2014-06-13
公开(公告)号: CN104021196B 公开(公告)日: 2017-04-26
发明(设计)人: 段锴;王海 申请(专利权)人: 中国民航信息网络股份有限公司
主分类号: G06F17/30 分类号: G06F17/30
代理公司: 北京瑞思知识产权代理事务所(普通合伙)11341 代理人: 李涛,袁红红
地址: 100010 北*** 国省代码: 北京;11
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 针对 system 消息 队列 方法
【说明书】:

技术领域

发明涉及网络通信领域,提供了一种针对System V消息队列的I/O复用方法。

背景技术

System V消息队列:System V是贝尔实验室开发的一个Unix分支版本,消息队列是由System V提供的IPC(Interprocess Communication)进程间通信的机制之一。

I/O复用(I/O multiplexing):当一个进程需要同时处理多个网络连接或交互式输入时,进程通过预先告知操作系统内核,使得内核一旦发现进程指定的一个或多个I/O条件就绪时,它就通知进程进行处理,该机制称为I/O复用,目前支持I/O复用的系统调用包括select、poll、epoll等调用方式。

Socket:网络套接字,一种网络通讯技术。

FIFO:有名管道,一种进程间通信的技术,支持在不同进程之间单向的数据传输。

航班查询系统是民航旅游分销系统最核心的功能之一,它服务于航空公司、机票代理人和购票旅客,为他们供准确实时的国内国际航班详细数据,为广大旅客的购票和出行安排提供支持。该系统已经为民航代理人、淘宝、游易、艺龙等大型机票分销网站,国航、东航、海航等航空公司的机票直销网站提供航班查询功能。该系统访问量达到2000TPS,具有很高的可靠性和性能要求,因此该系统采用了多进程架构,分为网络通信进程和航班查询进程两类。网络通信是航班查询系统需要处理的主要技术之一。WSH(Workstation Handler)进程是航班查询系统专门负责服务端网络通信的进程,一方面它需要处理多个客户端的socket网络连接,从中接收不同客户端的请求报文并放至航班查询进程的请求队列中,同时该进程还要处理一个本地System V消息队列Q_OUT,从中获取应答报文返回客户端,如图1所示。因此WSH进程需要采用I/O复用技术来同时处理来自网络连接和System V消息队列的报文。

通过采用select或poll等系统调用可以实现多个网络连接的I/O复用,但是由于System V消息队列的标识符不属于描述符标识,因此不能在消息队列Q_OUT上采用select或poll等调用。

目前解决该问题的已知方案还有采用多线程技术,也即采用不同的线程分别去处理Q_OUT队列和网络Socket的报文。

多线程方案采用不同的线程分别去处理Q_OUT队列和网络Socket的报文,这种方案的缺点如下:

1)多线程的编程实现难度高,调试复杂;

2)多线程的可靠性较差,一个线程挂掉将导致整个进程挂掉;

3)多线程比单线程有额外的资源开销要求(例如内存和多核CPU),在某些特定用户的环境下(单核CPU和内存受限),多线程方案不能被采用。

发明内容

基于以上问题,本发明提供了一种针对System V消息队列的I/O复用方法,以使得WSH进程可以同时处理来自网络连接和System V消息队列的报文,该方法也可以用于其它有类似服务端处理网络通信需求的系统。本发明的复用方法利用了有名管道(FIFO)技术,FIFO的描述符标识与Socket的描述符类似,可以被select调用和支持,因此通过为WSH进程添加FIFO组件,WSH进程通过select调用对FIFO和不同的网络Socket连接进行I/O复用,航班查询进程在放Q_OUT队列的同时,往FIFO中发送1个字节的报文作为event事件,WSH通过select调用获取该事件,进而触发处理Q_OUT队列中的应答报文,从而借助FIFO达到了对System V消息队列I/O复用的目的。

另外,由于针对有名管道和消息队列的操作是多个独立API,不是原子操作,会带来不一致问题,造成报文发送延迟或死锁,因此本发明还设计了从消息队列接收报文的处理流程来解决。

本发明通过借用有名管道FIFO,使得专门负责服务端网络通信的进程WSH可以在单进程、单线程运行模式下实现对网络Socket和System V消息队列I/O复用的目的。

本方法使用的各种技术比如socket通讯技术、System V消息队列操作、select I/O复用模型都是成熟技术,不再赘述。本方法涉及航班查询进程和WSH进程,是由这两个进程借助有名管道FIFO协同实现对消息队列Q_OUT的I/O复用。

本发明公开了一种针对System V消息队列的I/O复用方法,包括以下步骤:

步骤1,启动WSH进程,创建有名管道FIFO和消息队列Q_OUT;

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国民航信息网络股份有限公司,未经中国民航信息网络股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201410266122.5/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top