一种数据交互的优化方法、装置、服务器及存储介质与流程

文档序号:14725725发布日期:2018-06-19 06:55阅读:214来源:国知局

本发明实施例涉及数据交互技术领域,尤其涉及一种数据交互的优化方法、装置、服务器及存储介质。



背景技术:

随着科技的迅速发展,越来越多的终端实时数据需要进行一系列业务分析,如车辆的终端数据,涉及车辆里程统计、自适应巡航控制电源(Adaptive Cruise Control,ACC)分析、行停分析、终端报警处理、进出区域分析和异常停留分析等一系列错综复杂的业务。由于数据量大,数据种类多,数据的实时性,稳定性,可靠性要求较高,因而对数据处理时的数据交互性能提出了非常高的要求。

目前,许多分布式实时计算系统都能够实现处理大数据流,如Spark、Samza和Storm等。对于Storm实时数据处理中,需要把分析所得的“中间状态”存储于Redis数据库中,然后结合“中间状态”与最新的实时数据进行再次分析,不断得到最新分析结果。

然而,因为实时计算中涉及到大批量数据流,而且系统运行在多节点上,虽然Redis存取速度非常快捷,倘若每条实时数据的分析都查询一次“中间状态”,随着数据量的不断增大,数据处理的延时将大大增加,极大的影响了数据处理性能。并且因为系统是在多节点上运行,不同的节点上可能正在计算同一个车辆的多条实时数据,而每个节点上针对所查询的“中间状态”可能与别的节点相同也可能不同,可能使得存储的中间状态冗余,最终使得分析结果冗余甚至紊乱。



技术实现要素:

本发明实施例提供了一种数据交互的优化方法、装置、服务器及存储介质,可以减小交互次数,降低延时,并避免业务分析过程中的冗余和紊乱。

第一方面,本发明实施例提供了一种数据交互的优化方法,包括:

将从消息队列中接收的同一批数据发送给同一处理组件;

通过所述同一处理组件批量查询所述同一批数据在数据库中存储的中间状态,响应所述批量查询更新各条数据对应的中间状态的全系统比较计数参数的取值,并将更新的各条数据对应的中间状态的全系统比较计数参数的取值和所述中间状态存储在所述数据库中,其中所述全系统比较计数参数用于统计相应数据的中间状态的查询次数;

依据所述各条数据和所述各条数据对应的中间状态进行业务处理;

在业务处理后,针对每条数据,若所述数据库中存储的该条数据对应的中间状态的全系统比较计数参数的取值不变,则在所述数据库中更新该条数据对应的中间状态。

第二方面,本发明实施例还提供了一种数据交互的优化装置,该装置包括:

数据发送模块,用于将从消息队列中接收的同一批数据发送给同一处理组件;

查询模块,用于通过所述同一处理组件批量查询所述同一批数据在数据库中存储的中间状态,响应所述批量查询更新各条数据对应的中间状态的全系统比较计数参数的取值,并将更新的各条数据对应的中间状态的全系统比较计数参数的取值和所述中间状态存储在所述数据库中,其中所述全系统比较计数参数用于统计相应数据的中间状态的查询次数;

处理模块,用于依据所述各条数据和所述各条数据对应的中间状态进行业务处理;

更新模块,用于在业务处理后,针对每条数据,若所述数据库中存储的该条数据对应的中间状态的全系统比较计数参数的取值不变,则在所述数据库中更新该条数据对应的中间状态。

第三方面,本发明实施例还提供了一种服务器,所述服务器包括:

一个或多个处理器;

存储装置,用于存储一个或多个程序;

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上所述的数据交互的优化方法。

第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述的一种数据交互的优化方法。

本发明实施例通过将同一批数据发送给同一处理组件并查询所述同一批数据在数据库中存储的中间状态,为各条数据对应的中间状态设置一个全系统比较计数参数,并通过判断所述全系统比较计数参数的取值在所述同一批数据业务处理后是否发生变化来判断是否有冗余中间状态的改变,当所述全系统比较计数参数的取值不变,则没有冗余中间状态的改变,所述数据库中更新相应数据对应的中间状态。本发明实施例的技术方案可以减小交互次数,降低延时,并避免业务分析过程中的冗余和紊乱。

附图说明

图1为本发明实施例一中的一种数据交互的优化方法的流程图;

图2为本发明实施例二中的一种数据交互的优化方法的流程图;

图3为本发明实施例三中的一种数据交互的优化装置的结构示意图;

图4为本发明实施例四中的服务器的结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

实施例一

图1为本发明实施例一中的一种数据交互的优化方法的流程图,本实施例可适用于数据交互的优化的情况,该方法可以由数据交互的优化装置来执行,该装置可以采用软件和/或硬件的方式实现,例如,该装置可配置于服务器中。本实施例可选基于分布式计算系统Strom进行数据处理和基于数据库Redis进行数据存储,该方法具体可以包括:

步骤110、将从消息队列中接收的同一批数据发送给同一处理组件。

其中,所述消息队列可以采用分布式开放消息系统(Rocket MQ),RocketMQ是一个分布式、队列模型的开源消息中间件,具有能够保证严格的消息顺序、提供丰富的消息拉取模式、高效的订阅者水平扩展能力、实时的消息订阅机制和亿级消息堆积能力等特点。

在本实施例中,可以将终端(如车载终端)的实时数据经过网关处理后,发送至RocketMQ中。其中,所述网关又称网间连接器或协议转换器,可以在传输层上以实现网络互连。

由于Storm的可扩展、容错性、保证数据被处理、可使用任意开发语言、部署简单和自由开源等特点,本实施例可选基于分布式计算系统Strom进行实时数据的处理。而Redis是一个高性能key-value远程内存数据库,具有读写性能优异、支持数据持久化、有RDB(Redis Databas)和AOF(Append Only File)两种持久化方式、可进行读写分离、支持主从复制和有丰富的数据结构类型等特点,因此本实施例可选Redis进行数据的存储。

具体的,Strom中的数据输入节点(Spout)可以从RocketMQ中接收实时数据,并将同一批数据发送给同一处理组件,即发送给Strom中的同一Bolt。其中,Spout和Bolt均为Strom中的结算节点,Spout也可以称作消息生产者,是Strom中数据的源头,接收外部的数据,再发送出去;Bolt也可以称作数据处理单元,Bolt在Storm运行过程中,可以从一个或者多个其他的计算节点接收数据,可以从Spout接收数据或其他的Bolt接收数据处理并发射出去。

步骤120、通过所述同一处理组件批量查询所述同一批数据在数据库中存储的中间状态,响应所述批量查询更新各条数据对应的中间状态的全系统比较计数参数的取值,并将更新的各条数据对应的中间状态的全系统比较计数参数的取值和所述中间状态存储在所述数据库中,其中所述全系统比较计数参数用于统计相应数据的中间状态的查询次数。

其中,所述中间状态可以为实时数据处理过程中产生的对下一次分析处理结果存在影响的中间结果。所述全系统比较计数参数可以为利用Redis中的Hincrby命令对各条数据对应的中间状态设置的,用于统计相应数据的中间状态的查询次数,即所述全系统比较计数参数的取值的初始值为0,每查询一次在Redis中存储的中间状态所述全系统比较计数参数的取值加1。示例性的,设置全系统比较计数参数的语句可以为“local count=redis.call('HINCRBY',sxVid,\\\"count\\\",1)”,其中“sxVid”为终端ID相关的字符串,“count”为全系统比较计数参数。

具体的,可以通过Bolt对所述同一批数据针对不同的业务类型进行常规的数据处理,并且查询所述同一批数据在Redis中存储的中间状态。

示例性的,可选采用Lua脚本查询Redis中存储的中间状态,Lua语句可以为“local oldMidData=redis.call('HGET',sxVid,\\\"midData\\\")”。其中,Lua是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。

进一步的,所述全系统比较计数参数可以响应所述批量查询更新取值,并将更新的各条数据对应的中间状态的全系统比较计数参数的取值和所述中间状态存储在Redis中。

步骤130、依据所述各条数据和所述各条数据对应的中间状态进行业务处理。

步骤140、在业务处理后,针对每条数据,若所述数据库中存储的该条数据对应的中间状态的全系统比较计数参数的取值不变,则在所述数据库中更新该条数据对应的中间状态。

具体的,在业务处理后,针对每条数据,若Redis中存储的该条数据对应的中间状态的全系统比较计数参数的取值不变,可以说明该条数据对应的中间状态没有被另一节点改写过,则将业务处理后更新的该条数据对应的中间状态存储在Redis中。

本实施例通过将同一批数据发送给同一处理组件并查询所述同一批数据在数据库中存储的中间状态,为各条数据对应的中间状态设置一个全系统比较计数参数,并通过判断所述全系统比较计数参数的取值在所述同一批数据业务处理后是否发生变化来判断是否有冗余中间状态的改变,当所述全系统比较计数参数的取值不变,则没有冗余中间状态的改变,所述数据库中更新相应数据对应的中间状态。本实施例的技术方案可以减小交互次数,降低延时,并避免业务分析过程中的冗余和紊乱。

实施例二

图2为本发明实施例二中的一种数据交互的优化方法的流程图。本实施例在上述实施例的基础上,进一步优化了上述数据交互的优化方法。相应的,本实施例的方法具体可以包括:

步骤210、将从消息队列中接收的同一批数据发送给同一处理组件。

步骤220、通过所述同一处理组件批量查询所述同一批数据在数据库中存储的中间状态,响应所述批量查询更新各条数据对应的中间状态的全系统比较计数参数的取值,并将更新的各条数据对应的中间状态的全系统比较计数参数的取值和所述中间状态存储在所述数据库中,其中所述全系统比较计数参数用于统计相应数据的中间状态的查询次数。

其中,可以为各条数据分别设置一个临时序列编号,所述临时序列编号的生命周期为该批数据业务处理开始到业务处理结束,每条数据的临时序列编号都不相同,并可以将所述临时序列编号与所述中间状态一起存储在所述数据库中。

步骤230、为所述各条数据添加对应的业务标签,并依据所述业务标签将所述各条数据和所述各条数据对应的中间状态发送给对应的业务处理流程进行分析处理。

其中,所述业务标签可以为根据业务类型设置的,并集中在一个图(Map)结构中,不同的业务类型对应不同的业务处理流程。

具体的,为所述各条数据添加对应的业务标签,并依据所述业务标签将所述各条数据和所述各条数据对应的中间状态发送给对应的业务处理流程进行分析处理,并可以将处理结果和所述各条数据的临时序列编号写入报表中。需要说明的是,由于所述同一批数据中的所有业务都发给同一处理组件,因此避免了业务种类的增加引起的与Redis交互次数的增加和延时增加。

步骤240、在业务处理后,针对每条数据,若所述数据库中存储的该条数据对应的中间状态的全系统比较计数参数的取值不变,则在所述数据库中更新该条数据对应的中间状态。

具体的,在业务处理后,针对每条数据,若所述数据库中存储的该条数据对应的中间状态的全系统比较计数参数的取值不变,则在所述数据库中更新该条数据对应的中间状态,进入步骤260。

步骤250、若所述数据库中存储的该条数据对应的中间状态的全系统比较计数参数的取值变化,则在所述数据库中不更新该条数据对应的中间状态。

具体的,若所述数据库中存储的该条数据对应的中间状态的全系统比较计数参数的取值变化,可以说明中间状态被别的节点已改写,因此该条数据对应的中间状态不需进行存储,避免了中间状态存储的冗余。

步骤260、将该条数据对应的业务处理结果异步写入Mysql数据库中。

其中,所述Mysql是一种关系型数据库管理系统(Relational DatabaseManagement System,RDBMS),MySQL数据库使用最常用的数据库管理语言-结构化查询语言(Structured Query Language,SQL)进行数据库管理。

具体的,可以将步骤240中的该条数据的临时序列编号返回到系统中,并利用返回的临时序列编号查询所述报表中该条数据的对应的业务处理结果,并将所述业务处理结果异步写入Mysql数据库中。采用异步写入的方式,进一步降低了因同步写入造成的延时,提高了处理性能。

示例性的,若终端为车载终端,获取到行停分析、ACC分析和报警分析等不同业务类型的数据的处理结果时,可以采用异步写入Mysql数据库中。

本实施例通过将同一批数据发送给同一处理组件并查询所述同一批数据在数据库中存储的中间状态,为各条数据对应的中间状态设置一个全系统比较计数参数,并通过判断所述全系统比较计数参数的取值在所述同一批数据业务处理后是否发生变化来判断是否有冗余中间状态的改变,当所述全系统比较计数参数的取值不变,则没有冗余中间状态的改变,所述数据库中更新相应数据对应的中间状态,并将该条数据对应的业务处理结果异步写入Mysql数据库中。本实施例的技术方案可以减小交互次数,降低延时,并避免业务分析过程中的冗余和紊乱。

实施例三

图3为本发明实施例三中的一种数据交互的优化装置的结构示意图,所述装置可以包括:

数据发送模块310,用于将从消息队列中接收的同一批数据发送给同一处理组件;

查询模块320,用于通过所述同一处理组件批量查询所述同一批数据在数据库中存储的中间状态,响应所述批量查询更新各条数据对应的中间状态的全系统比较计数参数的取值,并将更新的各条数据对应的中间状态的全系统比较计数参数的取值和所述中间状态存储在所述数据库中,其中所述全系统比较计数参数用于统计相应数据的中间状态的查询次数;

处理模块330,用于依据所述各条数据和所述各条数据对应的中间状态进行业务处理;

更新模块340,用于在业务处理后,针对每条数据,若所述数据库中存储的该条数据对应的中间状态的全系统比较计数参数的取值不变,则在所述数据库中更新该条数据对应的中间状态。

进一步的,该装置还可以包括设置模块,具体可以用于:

在所述所述响应所述批量查询更新各条数据对应的中间状态的全系统比较计数参数的取值之前,利用Redis中的Hincrby命令对各条数据对应的中间状态设置一个全系统比较计数参数。

进一步的,所述处理模块330具体可以用于:

为所述各条数据添加对应的业务标签,并依据所述业务标签将所述各条数据和所述各条数据对应的中间状态发送给对应的业务处理流程进行分析处理。

进一步的,该装置还可以包括不更新模块,具体可以用于:

若所述数据库中存储的该条数据对应的中间状态的全系统比较计数参数的取值变化,则在所述数据库中不更新该条数据对应的中间状态。

进一步的,该装置还可以包括结果写入模块,具体可以用于:

在所述数据库中更新该条数据对应的中间状态之后,将该条数据对应的业务处理结果异步写入Mysql数据库中。

本发明实施例所提供的数据交互的优化装置可执行本发明任意实施例所提供的数据交互的优化方法,具备执行方法相应的功能模块和有益效果。

实施例四

图4为本发明实施例四中的服务器的结构示意图。图4示出了适于用来实现本发明实施方式的示例性服务器412的框图。图4显示的服务器412仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图4所示,服务器412以通用计算设备的形式表现。服务器412的组件可以包括但不限于:一个或者多个处理器416,系统存储器428,连接不同系统组件(包括系统存储器428和处理器416)的总线418。

总线418表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器416或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。

服务器412典型地包括多种计算机系统可读介质。这些介质可以是任何能够被服务器412访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。

系统存储器428可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)430和/或高速缓存存储器432。服务器412可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统434可以用于读写不可移动的、非易失性磁介质(图4未显示,通常称为“硬盘驱动器”)。尽管图4中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线418相连。存储器428可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。

具有一组(至少一个)程序模块442的程序/实用工具440,可以存储在例如存储器428中,这样的程序模块442包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块442通常执行本发明所描述的实施例中的功能和/或方法。

服务器412也可以与一个或多个外部设备414(例如键盘、指向设备、显示器424等)通信,还可与一个或者多个使得用户能与该服务器412交互的设备通信,和/或与使得该服务器412能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口422进行。并且,服务器412还可以通过网络适配器420与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器420通过总线418与服务器412的其它模块通信。应当明白,尽管图中未示出,可以结合服务器412使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。

处理器416通过运行存储在系统存储器428中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的数据交互的优化方法,该方法包括:

将从消息队列中接收的同一批数据发送给同一处理组件;

通过所述同一处理组件批量查询所述同一批数据在数据库中存储的中间状态,响应所述批量查询更新各条数据对应的中间状态的全系统比较计数参数的取值,并将更新的各条数据对应的中间状态的全系统比较计数参数的取值和所述中间状态存储在所述数据库中,其中所述全系统比较计数参数用于统计相应数据的中间状态的查询次数;

依据所述各条数据和所述各条数据对应的中间状态进行业务处理;

在业务处理后,针对每条数据,若所述数据库中存储的该条数据对应的中间状态的全系统比较计数参数的取值不变,则在所述数据库中更新该条数据对应的中间状态。

实施例五

本发明实施例五还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例所提供的数据交互的优化方法,该方法包括:

将从消息队列中接收的同一批数据发送给同一处理组件;

通过所述同一处理组件批量查询所述同一批数据在数据库中存储的中间状态,响应所述批量查询更新各条数据对应的中间状态的全系统比较计数参数的取值,并将更新的各条数据对应的中间状态的全系统比较计数参数的取值和所述中间状态存储在所述数据库中,其中所述全系统比较计数参数用于统计相应数据的中间状态的查询次数;

依据所述各条数据和所述各条数据对应的中间状态进行业务处理;

在业务处理后,针对每条数据,若所述数据库中存储的该条数据对应的中间状态的全系统比较计数参数的取值不变,则在所述数据库中更新该条数据对应的中间状态。

本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1