一种多并发多通道环境下的数据实时查询系统技术方案

技术编号:24331362 阅读:64 留言:0更新日期:2020-05-29 19:43
本发明专利技术提供了一种多并发多通道环境下的数据实时查询系统,包括客户端模块、服务器模块、数据库模块、实时数据查询模块、Redis模块、定时管理模块、数据生产者模块和缓存清理模块;系统采用数据缓存机制支持数据的实时快速查询,支持多并发环境下,每个客户端连接的实时数据查询各自独立,并且每个客户端连接下,不同的数据通道的数据互相独立,多个客户端连接可以共享相同的数据通道,且实时数据查询彼此独立,互不影响;与此同时,保证每个客户端每个数据通道查询的数据连续递增,不重叠,不遗漏;系统还可以根据查询的频率动态设置数据缓存时间,以便有效利用内存资源。

A real-time data query system in multi concurrent and multi-channel environment

【技术实现步骤摘要】
一种多并发多通道环境下的数据实时查询系统
本专利技术涉及一种多并发多通道环境下的数据实时查询系统。
技术介绍
目前流数据的应用十分广泛,流数据是一组顺序、大量、快速、连续到达的数据序列,一般情况下,数据流可被视为一个随时间延续而无限增长的动态数据集合。应用于网络监控、传感器网络、航空航天、气象测控和金融服务等领域。流数据是由数据源持续生成的数据,通常也同时以数据记录的形式发送。流数据包括多种数据,例如客户使用移动或Web应用程序生成的日志文件、网购数据、游戏内玩家活动、社交网站信息、金融交易大厅或地理空间服务,以及来自数据中心内所连接设备或仪器的遥测数据。此类数据需要按记录或根据滑动时间窗口按顺序进行递增式处理,可用于多种分析,包括关联、聚合、筛选和取样。其中一种流数据的应用是对摄像机的监控视频进行分析,不同的摄像机产生不同的视频流数据,形成不同的数据通道,应用系统需要针对不同的通道分别进行分析,分析的数据通常需要实时展示,以便实现视频的监控和视频信息的智能分析实时同步,帮助监控人员快速理解视频中的对象、事件。流数据的分析结果通常会先存放到消息队列中,然后再统一存储到数据库中,也可以直接存储到数据库中。存储到消息队列中,通常是因为避免流数据产生过快来不及处理,或者分析结果有二次处理的需求。有的系统是将原始数据或者中间结果存储到消息队列中,以此缓解处理速度滞后于数据产生速度的问题。当客户端需要实时展示流数据的分析结果时,通常的做法是使用一个服务程序从消息队列中不断取出新入列的数据或者从数据库中读取新插入的数据,然后发送给客户端展示,或者由客户端从消息队列读取或从数据库连续递增查询。其中从消息队列取数据时,一个客户端取完,其它客户端可能就无法再取到,从数据库查询时,性能比较低下,并且随着数据的增长,性能问题越来越严重,除此以外,客户端需要查询多个数据源的数据,即涉及到多通道数据的展示问题。针对多并发多通道场景下查询获取实时数据,目前普遍采用的是C/S架构,由客户端向后台注册订阅数据,然后后台每当获取新的实时数据后,将数据逐个主推给各个订阅客户端,其系统架构图如图1所示,其中客户端模块用于在前端实时展示最新的数据,服务器模块用于处理客户端的服务请求,包括接收客户端的注册,并向消息处理模块订阅实时数据,以及从数据库模块中查询历史数据;消息处理模块用于侦听消息队列模块中的消息,当发现有新的数据消息时,立即取出来进行处理,包括将数据持久化存储到数据库模块中,以及根据服务器模块注册的实时数据订阅客户端列表,将数据主推给这些订阅者;消息队列模块用于缓存实时数据;数据生产者模块用于源源不断对原始数据进行采集和分析加工,并将分析的结果临时存储到消息队列中;数据库模块用于持久化存储数据。以下描述现有技术的缺点:(1)多个客户端同时查询实时数据时,并非完全并发,并且相互影响:由于实时的数据是存放在消息队列中的,需要通过消息处理模块及时取走消息并处理,以免因断电造成数据丢失或者内存溢出,客户端需要实时展示这些实时数据时,需要向服务器模块注册,并最终形成向消息处理模块的数据订阅请求,消息处理模块在取走最新消息的时候,可以依据当前的订阅列表进行逐一推送数据。由于推送是按照时间有序进行的,因此对每个客户端来说,实时数据查询并不是完全并发的,并且当其中一个客户端发生网络链路故障后,将会导致其它客户端出现数据展示延迟,除此以外,后台需要管理客户端的订阅和主推逻辑,维护数据和客户端的映射关系,一旦出现逻辑错误,将影响全局;(2)客户端中多个通道的数据叠加在一起,每个通道无法独立并发查询数据:在客户端中,通道的原始数据和加工数据是分别集中展示的,当客户端同时管理多个通道时,这些通道的数据就会叠加在一起混合展示,虽然可以通过关闭通道的开关来控制任意时刻只有一个通道的数据从而实现切换通道的目的,但是无法支持多个通道同时独立查询数据,而且即便所有通道的开关都打开,它们获取数据的方式也是串行的,因为数据是由消息处理模块主推的,消息处理模块从消息队列中有序取出各通道的数据,并逐一主推给订阅该通道的客户端,所有通道的实时数据并发查询受限于消息处理模块的串行处理,当多个客户端共享相同的通道时,这意味着消息处理模块要多次重复主推共享通道的数据,若重复主推的逻辑实现有缺陷,则将导致多客户端共享通道时不可靠,并且自身的网络延迟将会影响其它客户端中的通道;(3)每个通道查询的数据可能存在冗余和遗漏的情况:当客户端开始订阅实时数据查询时,消息队列中可能有未处理完成的消息,此时消息处理模块会将这些消息主推给客户端的相应通道,造成数据冗余,同时主推过程中,若发生链路超时或其它故障,将导致客户端接收的数据有遗漏。(4)缓存的数据不支持有效期设置,无法保证一段时间内可重复查询:由于实时数据存储在消息队列中,并由消息处理模块侦听队列和及时取走消息,消息在队列中的滞留时间取决于消息处理模块的处理速度,将是随机的,无法保证数据缓存的有效期,当需要快速获取最近一段时间内的数据时,将无法通过缓存机制来实现。多并发多通道环境下的数据实时查询的其中一个典型应用是摄像机监控视频结构化分析结果的实时查询,以人脸识别签到为例,参与签到的人员通过查看客户端的实时抓拍人脸识别结果,可判断自己是否签到成功,而管理员通过查看客户端的实时抓拍人脸识别结果,可立即判断当前拜访的人员是需要签到的白名单还是陌生人,同样的,运维人员可以通过查看监控视频和实时的分析结果,判断现场环境、设备配置和程序算法等是否有问题,从而不断调整和优化系统。通常后台的系统支持多路视频的接入分析,也为多个不同的用户服务,因此衍生出多个客户端并发和多路视频通道的数据实时查询场景,针对该场景,目前应用的技术尚存在许多不足,具体如下:(1)多并发多通道环境下数据实时查询时,多个客户端之间的数据查询并非完全独立,后台需要维护客户端的注册订阅和主推管理,比较繁琐;(2)多并发多通道环境下数据实时查询时,每个客户端无法实现单个通道的数据独立查询,多个客户端共享同一个通道数据时不可靠,且相互影响,(3)多并发多通道环境下数据实时查询时,针对每个通道查询的数据可能存在冗余和遗漏的情况;(4)多并发多通道环境下数据实时查询时,不支持动态设置数据缓存时间,无法保证最近一段时间内的数据可重复快速查询。
技术实现思路
专利技术目的:为解决
技术介绍
中存在的技术问题,本专利技术提出一种多并发多通道环境下的数据实时查询系统,包括客户端模块、服务器模块、数据库模块、实时数据查询模块、Redis模块、定时管理模块、数据生产者模块和缓存清理模块;所述并发是指多个前端客户端同时访问后台服务器,所述多通道是指多个相互独立的数据通道,数据通道即数据从产生到展示的独立业务流程,所述Redis是指开源的内存数据库产品;其中,所述客户端模块用于实时查询和动态展示所述数据生产者模块产生的数据;所述服务器模块用于连接两个以上的客户端模块,支持多并发访问,并且转发所述客户端本文档来自技高网
...

【技术保护点】
1.一种多并发多通道环境下的数据实时查询系统,其特征在于,包括客户端模块、服务器模块、数据库模块、实时数据查询模块、Redis模块、定时管理模块、数据生产者模块和缓存清理模块;/n其中,所述客户端模块用于实时查询和动态展示所述数据生产者模块产生的数据;/n所述服务器模块用于连接两个以上的客户端模块,支持多并发访问,并且转发所述客户端模块的实时数据查询请求到所述实时数据查询模块;/n所述数据库模块用于持久化存储数据以及数据的元数据信息;/n所述实时数据查询模块用于按照所述服务器模块的数据查询请求从所述Redis模块获取目标数据,并以程序包的形式集成在所述服务器模块中,保证所述客户端模块并发查询数据的性能;/n所述Redis模块用于缓存来自两个以上的数据生产者模块的数据,并保证不同数据生产者的数据隔离存储,实现两个以上的数据通道完全独立并发运行;/n所述数据生产者模块用于持续不断产生需要查询和展示的实时数据,数据生产者模块一方面将数据缓存到所述Redis模块,用以支持数据实时快速查询,另一方面将数据冗余存储到所述数据库模块,实现数据的持久化存储;/n所述定时管理模块用于接收用户对数据缓存有效期的配置,还用于定时触发所述缓存清理模块对所述Redis模块中的过期的数据进行清理;/n所述缓存清理模块定时收到由所述定时管理模块启动的定时器触发的清理消息,定期清理所述Redis模块中缓存的过期的数据。/n...

【技术特征摘要】
1.一种多并发多通道环境下的数据实时查询系统,其特征在于,包括客户端模块、服务器模块、数据库模块、实时数据查询模块、Redis模块、定时管理模块、数据生产者模块和缓存清理模块;
其中,所述客户端模块用于实时查询和动态展示所述数据生产者模块产生的数据;
所述服务器模块用于连接两个以上的客户端模块,支持多并发访问,并且转发所述客户端模块的实时数据查询请求到所述实时数据查询模块;
所述数据库模块用于持久化存储数据以及数据的元数据信息;
所述实时数据查询模块用于按照所述服务器模块的数据查询请求从所述Redis模块获取目标数据,并以程序包的形式集成在所述服务器模块中,保证所述客户端模块并发查询数据的性能;
所述Redis模块用于缓存来自两个以上的数据生产者模块的数据,并保证不同数据生产者的数据隔离存储,实现两个以上的数据通道完全独立并发运行;
所述数据生产者模块用于持续不断产生需要查询和展示的实时数据,数据生产者模块一方面将数据缓存到所述Redis模块,用以支持数据实时快速查询,另一方面将数据冗余存储到所述数据库模块,实现数据的持久化存储;
所述定时管理模块用于接收用户对数据缓存有效期的配置,还用于定时触发所述缓存清理模块对所述Redis模块中的过期的数据进行清理;
所述缓存清理模块定时收到由所述定时管理模块启动的定时器触发的清理消息,定期清理所述Redis模块中缓存的过期的数据。


2.根据权利要求1所述的系统,其特征在于,所述数据生产者模块在不断产生实时数据的过程中,将数据双备份到Redis模块和数据库模块。


3.根据权利要求2所述的系统,其特征在于,所述数据生产者模块的工作流程包括如下步骤:
步骤a1,数据生产者模块产生任意需要查询展示的数据;
步骤a2,数据生产者模块将数据持久化存储到数据库模块;
步骤a3,数据生产者模块判断数据是否需要缓存,如果需要,执行步骤a4;否则执行步骤a5;
步骤a4,数据生产者模块将数据缓存到Redis模块;
步骤a5,数据生产者模块判断是否停止产生数据,如果是,结束工作流程,否则返回步骤a1。


4.根据权利要求3所述的系统,其特征在于,所述实时数据查询模块和数据生产者模块共享相同的系统配置,并对客户端模块和服务器模块屏蔽数据访问的细节,实时数据查询模块能够与服务器模块集成在一起,运行在服务器模块的上下文环境中;系统配置即Redis模块缓存的数据的元数据信息,所述元数据信息包括数据的存储位置、存储结构、访问方式。


5.根据权利要求4所述的系统,其特征在于,所述服务器模块用于连接两个以上的客户端模块,支持多并发访问,具体包括如下步骤:
步骤b1,服务器模块接收客户端模块的连接;
步骤b2,服务器模块判断网络连接池是否已满,即是否达到最大允许连接的客户端数目,如果是,执行步骤b3,否则执行步骤b4;
步骤b3,服务器模块向客户端模块应答连接失败,然后执行步骤b8;
步骤b4,服务器模块从网络连接池分配一个连接给当前客户端模块;
步骤b5,服务器模块接收客户端模块的数据查询请求;
步骤b6,服务器模块通过实时数据查询模块获取Redis模块缓存的数据;
步骤b7,服务器模块向客户端模块应答步骤b6获取的数据;
步骤b8,实时数据查询模块判断是否停止服务,如果是,结束工作流程,否则返回步骤b1。


6.根据权利要求5所述的系统,其特征在于,所述实时数据查询模块针对服务器模块的数据查询请求工作流程包括如下步骤:
步...

【专利技术属性】
技术研发人员:周斌朱晨鸣张家健万修远王佳晓黄明科张海峰
申请(专利权)人:中通服咨询设计研究院有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1