[发明专利]基于MQ和异步IO的数据多级缓存与高速传输记录方法在审
申请号: | 202010868475.8 | 申请日: | 2020-08-26 |
公开(公告)号: | CN111949422A | 公开(公告)日: | 2020-11-17 |
发明(设计)人: | 李敏 | 申请(专利权)人: | 南京云灿信息科技有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 210000 江苏省南京市*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 mq 异步 io 数据 多级 缓存 高速 传输 记录 方法 | ||
1.基于MQ和异步IO的数据多级缓存与高速传输记录方法,该方法适用于整体系统架构中,其特征在于:该整体系统架构由数据发送端和数据接收端和多级缓存组成;
所述数据发送端由数据发送接口单元、高速数据发送单元组成;
所述数据接收端由高速数据接收单元、异步IO记录单元组成;
所述多级缓存包括发送数据缓存的多级缓存和接收数据缓存的多级缓存。
2.根据权利要求1所述的整体系统架构,其特征在于:所述数据发送端包括三级缓存,且所述三级缓存由发送端一级缓存、发送端二级缓存与发送端三级缓存组成,在数据准备线程和数据发送线程之间通过ZeroMQ的线程间通信模式inproc协议进行通信,且于ZeroMQ的PUSH端和PULL端都设置数据缓存,且该数据缓存发送端一级缓存和发送端二级缓存;在高速数据发送单元将数据向接收方发送时,采用ZeroMQ的TCP协议的DEALER模式进行发送,为了增强数据的传输稳定性,设置发送端缓存,且该发送端缓存为发送端三级缓存。
3.根据权利要求1所述的整体系统架构,其特征在于:所述数据接收端包括两级缓存,且该所述两级缓存由接收端一级缓存与接收端二级缓存组成,数据通过高速数据接收单元进行接收,采用ZeroMQ的TCP协议的DEALER模式接收数据,通过设置TCP接收缓存,提高数据的稳定性,该所述TCP接收缓存为接收端一级缓存,在高速数据接收单元和异步IO记录单元两个单元间,为了提高性能和降低模块之间的耦合度,设置了记录数据缓存,该记录数据缓存为接收端二级缓存。
4.根据权利要求1所述的数据发送端处理方法,其特征在于:
数据发送处理流程:数据发送处理分为两个线程,数据准备线程和数据发送线程,两个线程通过发送数据队列进行数据缓存,交换数据。数据准备线程不断将准备的数据通过ZeroMQ的inproc协议写入到数据队列中,数据发送线程不断通过ZeroMQ的inproc协议从数据队列中获取数据,通过ZeroMQ的TCP协议发送出去,数据发送的接入方式:为数据发送模块提供灵活的数据发送场景,支持两种数据接入方式:
接入方式1:提供API接口的数据接入方式,外部应用直接调用该API接口即可完成数据的发送;
接入方式2:提供发送数据队列的相关参数,外部应用使用ZeroMQ相应的设置,即可往发送数据队列中写入数据,进行发送;
该处理方法包括以下步骤:
S1:数据准备线程提供外部API接口,由外部API调用触发处理逻辑,详细处理如下:
调用发送接口单元,向发送接口写入数据,发送接口通过ZMQ,采用inproc协议的PUSH模式发送数据,设置发送数据缓存,发送数据前,先将发送数据写入到数据缓存,然后再通过缓存将数据发送给数据发送线程;
S2:数据发送线程监听发送数据队列,队列中有数据即触发数据发送逻辑处理,详细处理如下:监听ZMQ,采用inproc协议的PULL模式监听并接收数据,设置ZMQ接收缓存,监听到数据后,先存入缓存,然后再从缓存中获取数据,以防数据流量过大导致的积压和丢失,将获取到的数据打包,写入向外发送的ZMQ数据缓存中,将缓存中的数据通过ZeroMQ的TCP协议的DEALER模式发送出去。
5.根据权利要求1所述的数据接收处理方法,其特征在于:
数据接收处理流程分为两个线程,数据接收线程和数据记录线程,两个线程通过异步IO数据通道进行数据共享,交换数据,数据接收线程不断通过ZeroMQ的TCP协议从数据队列中异步获取数据,写入异步IO数据通道中,数据记录线程从异步IO数据通道中获取数据,通过异步IO技术写入文件,进行数据记录,通过共用数据接收和异步IO的异步IO数据通道中的数据缓存地址,减少处理过程中的内存拷贝,减少缓存的消耗和提高数据的写入速度;
该方法包括以下步骤:
步骤一、数据接收线程监听发送数据队列,队列中有数据即触发数据接收逻辑处理,详细处理如下:
S1:初始化异步IO相关的context,iocb,io_event等相关上下文;
S2:初始化用于异步IO通道队列共享用的数据缓存,空闲列表,空闲列表锁,已用列表,列表锁等;
S3:启动数据记录线程,并同数据记录线程共享以上内容;
S4:监听ZMQ,采用TCP协议的DEALER模式监听并接收数据;
S5:设置ZMQ接收缓存,监听到数据后,先存入缓存,然后再从缓存中获取数据,以防数据流量过大导致的积压和丢失;
S6:判断异步IO是否有空闲通道,如有空闲通道,将数据写入到空闲通道中(与数据记录线程共享缓存中的内存地址);
S7:为防止数据接收线程和数据记录线程操作共享变量冲突,在共享变量操作前先锁定,操作完成后再解锁。
步骤二、数据记录线程循环处理异步IO通道,发现队列中有数据即进行异步IO写入处理,写入之后释放共享缓存中的数据,以便数据接收线程向空闲单元中写入数据,详细处理如下:
S1:循环判断异步IO通道的队列中是否有数据,有数据即进行以下处理;
S2:将已用队列锁定,从已用队列中获取需要处理的数据位置,然后解锁;
S3:根据获取的数据位置,从缓存队列中获取相应数据位置的数据;
S4:根据获取的数据位置,指定异步IO的iocb中对应可用通道;
S5:调用io_prep_pwrite将数据写入异步IO;
S6:调用io_submit提交异步IO;
S7:更新空闲队列;
S8:判断空闲队列是否小于整体队列长度的一半,如小于,则调用io_getevents获取空闲单元,更新空闲队列。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京云灿信息科技有限公司,未经南京云灿信息科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010868475.8/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种新型类脑视觉系统
- 下一篇:一种仿生式虫洞检测驱虫的珍贵树木生长分析仪