数据处理方法、装置、服务器及计算机可读存储介质与流程

文档序号:16926651发布日期:2019-02-22 19:55阅读:126来源:国知局
数据处理方法、装置、服务器及计算机可读存储介质与流程
本发明涉及计算机
技术领域
,尤其涉及一种数据处理方法、装置、服务器及计算机可读存储介质。
背景技术
:后台,是指为用户提供数据访问服务的服务器。随着用户访问量的逐步增加,后台与用户所持用户设备之间的交互越来越频繁,后台的传输能力、存储能力以及处理能力都不可避免地存在瓶颈,这就需要后台牺牲某部分性能,例如传输实时性或者处理可靠性,来缓解后台的存储压力和负载压力。由上可知,在后台与用户设备之间,现有的数据传输处理过程中难以兼顾实时性和可靠性。技术实现要素:为了解决相关技术中存在的数据传输处理过程中难以兼顾实时性和可靠性的问题,本发明各实施例提供一种数据处理方法、装置、服务器及计算机可读存储介质。其中,本发明所采用的技术方案为:第一方面,一种数据处理方法,包括:通过配置的多条链路,并行接收经由接入层转发的数据处理请求,所述数据处理请求由至少一数据源并发至所述接入层;针对每一链路,对接收到数据处理请求中的数据进行去重处理;通过为业务逻辑处理提供数据关联查询服务的数据中间件,在各链路上对去重处理的数据进行业务逻辑处理,每一链路挂载一个数据中间件,且不同链路挂载的数据中间件之间相互同步;将各链路上完成业务逻辑处理的数据合并,并对合并的数据进行去重处理。第二方面,一种数据处理装置,包括:请求接收模块,用于通过配置的多条链路,并行接收经由接入层转发的数据处理请求,所述数据处理请求由至少一数据源并发至所述接入层;第一去重模块,用于针对每一链路,对接收到数据处理请求中的数据进行去重处理;业务处理模块,用于通过为业务逻辑处理提供数据关联查询服务的数据中间件,在各链路上对去重处理的数据进行业务逻辑处理,每一链路挂载一个数据中间件,且不同链路挂载的数据中间件之间相互同步;第二去重模块,用于将各链路上完成业务逻辑处理的数据合并,并对合并的数据进行去重处理。在一示例性实施例中,所述数据中间件包括数据库,所述装置还包括数据表同步模块;所述数据表同步模块包括:第一同步信息获取单元,用于获取为进行源数据表与目的数据表同步而配置的唯一字段名;第一记录读取单元,用于从所述源数据表和所述目的数据表中分别提取该唯一字段名所标识的记录;第一记录存储单元,用于根据提取记录中字段的字段信息,将提取到的记录对应存储至源缓存映射表和目的缓存映射表;数据表更新单元,用于通过所述源缓存映射表与所述目的缓存映射表之间的比较,差异化更新所述目的数据表。在一示例性实施例中,所述字段信息包括用于指示字段是否属于主键的主键标记;所述第一记录存储单元包括:第一遍历子单元,用于对提取到记录中的字段进行遍历;第一序列化子单元,用于如果遍历到字段的主键标记指示遍历到的字段属于主键,则对遍历到的字段进行序列化,得到第一序列化数据;第二序列化子单元,用于如果遍历到字段的主键标记指示遍历到的字段不属于主键,则对遍历到的字段进行序列化,得到第二序列化数据;第一添加子单元,用于直至完成提取到记录中字段的遍历,以所述第一序列化数据作为键,以所述第二序列化数据作为该键的键值,对应存储至所述源缓存映射表和所述目的缓存映射表。在一示例性实施例中,所述数据表更新单元包括:差异比较子单元,用于比较所述源缓存映射表与所述目的缓存映射表,得到差异化结果;反序列化子单元,用于对所述差异化结果进行反序列化,得到反序列化数据;更新子单元,用于将所述反序列化数据更新至所述目的数据表。在一示例性实施例中,所述数据中间件包括挂载于同一链路的数据库和共享内存,所述装置还包括共享内存同步模块;所述共享内存同步模块包括:第二同步信息获取单元,用于获取为进行数据表与共享内存同步而配置的唯一字段名;第二记录读取单元,用于从所述数据表中获取该唯一字段名所标识的记录;第二记录存储单元,用于根据获取记录中字段的字段信息,将获取到的记录更新至第一哈希表。在一示例性实施例中,所述字段信息包括用于指示字段是否属于主键的主键标记;所述第二记录存储单元包括:第二遍历子单元,用于对获取到记录中的字段进行遍历;第一结构化子单元,用于如果遍历到字段的主键标记指示遍历到的字段属于主键,则对遍历到字段进行结构化,得到第一结构化数据;第二结构化子单元,用于如果遍历到字段的主键标记指示遍历到的字段不属于主键,则对遍历到的字段进行结构化,得到第二结构化数据;第二添加子单元,用于直至完成获取到记录中字段的遍历,以所述第一结构化数据作为键,以所述第二结构化数据作为该键的键值,更新至所述第一哈希表。在一示例性实施例中,所述共享内存同步模块还包括:时间戳获取单元,用于获取所述第一哈希表中各键对应的时间戳;清除单元,用于根据获取到的时间戳,从所述第一哈希表中清除未更新的键及对应的键值。在一示例性实施例中,待处理数据包括所述数据处理请求中的数据、合并的数据;第一去重模块或者第二去重模块均包括:标识获取单元,用于获取所述待处理数据对应的数据标识;冲突检测单元,用于根据所述数据标识对第二哈希表中的已接收数据标识进行冲突检测;数据丢弃单元,用于如果检测到所述第二哈希表中存在与所述数据标识冲突的已接收数据标识,则丢弃所述待处理数据。在一示例性实施例中,所述第一去重模块或者第二去重模块均还包括:哈希表更新单元,用于在所述数据处理请求中数据的去重处理过程中,待所述冲突检测完成,根据所述数据标识更新所述第二哈希表。在一示例性实施例中,所述哈希表更新单元包括:接收时间获取子单元,用于在所述第二哈希表中,如果检测到所述第二哈希表中存在与所述数据标识冲突的已接收数据标识,则获取所述数据处理请求的接收时间;时间戳更新子单元,用于根据所述接收时间,在所述第二哈希表中对检测到冲突的键进行时间戳更新,该检测到冲突的键对应于与所述数据标识冲突的已接收数据标识。在一示例性实施例中,所述哈希表更新单元包括:第三添加子单元,用于如果检测到所述第二哈希表中不存在与所述数据标识冲突的已接收数据标识,则以所述数据标识作为键,添加至所述第二哈希表。在一示例性实施例中,所述哈希表更新单元包括:淘汰子单元,用于如果所述第二哈希表已满,则根据所述第二哈希表中各键对应的时间戳,从所述第二哈希表中淘汰对应时间戳指示数据接收时间最早的键。第三方面,一种服务器,包括处理器及存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时实现如上所述的数据处理方法。第四方面,一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的数据处理方法。在上述技术方案中,针对至少一数据源并发至接入层的数据处理请求,后台配置多条链路,以并行接收经由接入层转发的数据处理请求,进而对数据处理请求中的数据进行去重处理,并基于数据中间件在各链路上对去重处理的数据进行业务逻辑处理,最终将各链路上完成业务逻辑处理的数据合并,并对合并的数据进行去重处理,由此,一方面,通过数据源并发方式和后台多链路并行处理方式的相互结合,保证了数据传输处理过程中的可靠性,避免数据重传,进而保证了数据传输处理过程中的实时性;另一方面,通过每一链路挂载一个数据中间件,为业务逻辑处理提供了便利的数据关联查询服务,充分保障了数据传输处理过程中的实时性,从而有效地解决了现有技术中存在的数据传输处理过程中难以兼顾实时性和可靠性的问题。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。附图说明此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并于说明书一起用于解释本发明的原理。图1是现有技术所涉及的系统架构的示意图。图2是本发明各实施例所涉及的系统架构的示意图。图3是根据一示例性实施例示出的一种服务器的硬件结构框图。图4是根据一示例性实施例示出的一种数据处理方法的流程图。图5是图4对应实施例所涉及的不同链路挂载数据库的系统架构的示意图。图6是图4对应实施例所涉及的同一链路挂载数据库和共享内存的系统架构的示意图。图7是根据一示例性实施例示出的在不同链路所挂载数据库之间进行源数据表与目的数据表的同步的步骤的流程图。图8是图7对应实施例中步骤450在一个实施例的流程图。图9是图7对应实施例中步骤470在一个实施例的流程图。图10是根据一示例性实施例示出的针对同一链路,在所述数据库中的数据表与共享内存之间进行同步的步骤的流程图。图11是图10对应实施例中步骤550在一个实施例的流程图。图12是根据一示例性实施例示出的对待处理数据进行去重处理的步骤的流程图。图13是根据一示例性实施例示出的一种数据处理装置的框图。图14是根据一示例性实施例示出的一种服务器的结构框图。通过上述附图,已示出本发明明确的实施例,后文中将有更详细的描述,这些附图和文字描述并不是为了通过任何方式限制本发明构思的范围,而是通过参考特定实施例为本领域技术人员说明本发明的概念。具体实施方式这里将详细地对示例性实施例执行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。图1是现有技术所涉及的系统架构的示意图。该系统架构100包括用户设备110、接入层130和后台150。其中,用户设备110可以是台式电脑、笔记本电脑、平板电脑、智能手机或者其他可向后台150发起数据处理请求的电子设备,在此不进行限定。接入层130,在用户设备110与后台150之间建立通信连接,以此实现数据处理请求的接收和转发。例如,接收用户设备110作为数据源而发起的数据处理请求,以及,将接收到的数据处理请求转发至后台150。后台150,为用户提供数据访问服务的服务器。当然,根据实际营运的需要,后台150还可以是多台服务器构成的服务器集群,甚至是由多台服务器构成的云计算中心,以便于能够更好地为海量用户提供数据访问服务,在此并未进行具体限定。如图1所示,一方面,对于用户设备110与接入层130之间,或者接入层130与后台150之间,数据传输的实时性和可靠性取决于所使用的网络协议。如果以网络协议tcp进行数据传输,受限于端到端之间连接数的限制,在数据量较大的情况下,容易堵塞,降低了数据传输效率,必将影响数据传输过程中的实时性。如果以网络协议udp进行数据传输,虽然数据传输效率高,有利于保证数据传输过程中的实时性,但是可靠性较差,反而增加了后续数据处理过程的复杂度,而且容易引发数据重传,也将影响数据传输过程中的实时性。另一方面,为了缓解后台150的存储压力和负载压力,后台150通常挂载一个数据中间件170,例如,数据中间件170为数据库,以此辅助后台150进行数据存放和数据读取。虽然数据库具有接口丰富、功能强大等优点,然而,在数据量较大的情况下,受限于数据库自身性能的限制,仍然无法保障数据处理过程中的实时性。并且,数据中间件170由于缺乏通知机制,会进一步影响数据处理过程中的实时性。此外,如图1所示,现有的系统架构基于单一链路,如果该单一链路上的任何一部分,例如数据中间件170,出现故障,势必影响数据传输处理过程中的实时性。由上可知,现有的数据传输处理过程中仍存在难以兼顾实时性和可靠性的缺陷,为此,本发明特提出了一种数据处理方法,使得在数据传输处理过程中实时性和可靠性得以兼顾,相应地,数据处理装置,可部署于架设冯诺依曼体系结构的电子设备中,例如,电子设备为服务器,以此实现数据处理方法。图2是本发明各实施例所涉及的系统架构的示意图。该系统架构100’包括用户设备110’、接入层130’和后台150’。进一步地,后台150’包括多条链路151、第一去重模块153、业务处理模块155、第二去重模块157、以及挂载于链路151的数据中间件159。区别于现有技术的系统架构100,一方面,对于用户设备110’与接入层130’之间,或者接入层130’与后台150’之间,数据传输基于网络协议udp,避免基于网络协议tcp时受限于端到端之间的连接数限制,而不利于大数据量传输,以此提高数据传输效率,保证数据传输过程中的实时性。同时,基于用户设备110’作为数据源的并发方式,以及后台150’所配置的多条链路151的并行接收方式,充分保障数据传输过程中的可靠性,避免了网络协议udp自身可靠性较差的问题。另一方面,每一条链路151挂载一个数据中间件159,避免各链路151之间的相互干扰,保持各链路151的独立性,即使某一条链路151出现故障,也不会影响数据处理过程中的实时性,使得数据处理过程能够达到物理级别容灾,确保系统架构100’的容灾稳定性,不仅为系统架构100’的热升级功能提供了极好的便利,而且充分保证了数据处理过程中的可靠性。图3是根据一示例性实施例示出的一种服务器的硬件结构框图。该种服务器适用于图2所示出系统架构中的后台150’。需要说明的是,该种服务器只是一个适配于本发明的示例,不能认为是提供了对本发明的使用范围的任何限制。该种服务器也不能解释为需要依赖于或者必须具有图3中示出的示例性的服务器200中的一个或者多个组件。服务器200的硬件结构可因配置或者性能的不同而产生较大的差异,如图3所示,服务器200包括:电源210、接口230、至少一存储器250、以及至少一中央处理器(cpu,centralprocessingunits)270。具体地,电源210用于为服务器200上的各硬件设备提供工作电压。接口230包括至少一有线或无线网络接口231、至少一串并转换接口233、至少一输入输出接口235以及至少一usb接口237等,用于与外部设备通信。例如,与图2所示出系统架构中的用户设备110’交互。存储器250作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,例如,共享内存,其上所存储的资源包括操作系统251、应用程序253及数据255等,存储方式可以是短暂存储或者永久存储。其中,操作系统251用于管理与控制服务器200上的各硬件设备以及应用程序253,以实现中央处理器270对海量数据255的计算与处理,其可以是windowsservertm、macosxtm、unixtm、linuxtm、freebsdtm等。应用程序253是基于操作系统251之上完成至少一项特定工作的计算机程序,其可以包括至少一模块(图3中未示出),每个模块都可以分别包含有对服务器200的一系列计算机可读指令。数据255可以是照片、图片,还可以是构建数据库的各种数据表,存储于存储器250中。中央处理器270可以包括一个或多个以上的处理器,并设置为通过总线与存储器250通信,以读取存储器250中存储的计算机可读指令,进而实现对存储器250中海量数据255的运算与处理。例如,通过中央处理器270读取存储器250中存储的一系列计算机可读指令的形式来完成数据处理方法。此外,通过硬件电路或者硬件电路结合软件也能同样实现本发明,因此,实现本发明并不限于任何特定硬件电路、软件以及两者的组合。请参阅图4,在一示例性实施例中,一种数据处理方法适用于图2所示系统架构中的后台,该后台的结构可以如图3所示。该种数据处理方法可以由后台执行,也可以理解为由后台中运行的各个模块执行。在下述方法实施例中,为了便于描述,以各步骤的执行主体为后台加以说明,但是并不对此构成限定。该种数据处理方法可以包括以下步骤:步骤310,通过配置的多条链路,并行接收经由接入层转发的数据处理请求,所述数据处理请求由至少一数据源并发至所述接入层。其中,并发,是指至少一数据源将多个数据处理请求同时发送至接入层,且该多个数据处理请求中的数据相同。并行接收,是指后台所配置的每一条链路同时接收到接入层转发的一个数据处理请求,且接收到的数据处理请求中的数据相同。结合图2所示,以一个用户进行说明,如果用户希望后台150’提供数据访问服务,便会借助用户设备110’向后台150’发起数据处理请求。那么,对于用户设备110’而言,便作为数据源,生成数据,并以此形成数据处理请求。考虑用户设备110’与接入层130’之间的数据传输基于网络协议udp,为了避免网络协议udp自身可靠性较差的问题,用户设备110’将对每一个待发送的数据处理请求进行拷贝,以得到包含相同数据的多个待发送的数据处理请求,进而将该多个待发送的数据处理请求同时发送至接入层130’。对于接入层130’而言,便可同时接收到来源于同一用户设备110’的多个数据处理请求,也可以理解为,接入层130’将同时接收到来自于同一数据源的多份相同数据。由于接入层130’与后台150’之间的数据传输仍是基于网络协议udp,同理,接入层130’在进行数据处理请求转发时,也将对每一个待转发的数据处理请求进行拷贝,以得到包含相同数据的多个待转发的数据处理请求。对于后台150’而言,便可通过配置的多条链路151,并行接收该多个待转发的数据处理请求,即一条链路151同时接收一个待转发的数据处理请求,也可以理解为,每一条链路151中传输处理的数据是相同的,从而解决了网络协议udp自身可靠性较差的问题,大大减少因udp丢包对数据传输处理过程所造成的可靠性影响。应当说明的是,链路的数量可以根据应用场景中对数据传输处理过程中可靠性的要求以及资源(例如存储资源)分配的要求而灵活地进行配置,例如,为后台配置3条链路,本实施例并未对此构成具体限定。补充说明的是,通过数据源并发方式的后台多链路并行处理方式的相互结合,充分保证了数据传输处理过程中的可靠性,为此,本实施例中,基于网络协议udp的数据传输,不再采用数据重传机制,进而保障数据传输处理过程中的实时性。进一步地,数据处理请求中的数据,通过数据标识唯一地标识,例如,数据标识a唯一地标识数据a。关于数据标识,用户设备侧,可以根据ip地址、设备识别码、发起数据处理请求的进程id、发起数据处理请求的时间、随机数等信息中的一种或者几种生成,在此不进行限定。步骤330,针对每一条链路,对接收到数据处理请求中的数据进行去重处理。可以理解,接入层不局限于面向一个用户,而是面向海量用户的,也就是说,接入层,不仅能够同时接收到来自于不同数据源的数据,而且对于同一数据源来说,也将同时接收到多份相同的数据。那么,经由接入层转发,对于后台而言,每一条链路接收到的数据处理请求中的数据便存在重复的可能性,为此,在对数据处理请求中的数据进行业务逻辑处理之前,需要进行去重处理,以避免业务逻辑处理重复进行。举例来说,数据源a向接入层并发数据处理请求a1\a2,数据源b向接入层并发数据处理请求b1\b2。其中,数据处理请求a1\a2包含相同的数据a,而数据处理请求b1\b2包含相同的数据b。就接入层来说,便可接收到来自于不同数据源a、b的数据处理请求a1\a2、b1\b2。假设后台配置了链路c和链路d,那么,在接入层,将分别对数据处理请求a1、a2、b1、b2进行拷贝,得到数据处理请求a11\a12、a21\a22、b11\b12、b21\b22。其中,数据处理请求a11、a12是根据数据处理请求a1分别为后台所配置的链路c、d拷贝生成的,以此类推。那么,对于后台所配置的链路c而言,便可接收到数据处理请求a11、a21、b11、b21。对于后台所配置的链路d而言,便可接收到数据处理请求a12、a22、b12、b22。由此可知,在链路c上,数据处理请求a11和a21均包含数据a,数据处理请求b11和b21均包含数据b,同理,在链路d上,数据处理请求a12和a22均包含数据a,数据处理请求b12和b22均包含数据b。在去重处理之后,对于链路c而言,便可仅针对数据处理请求a11和b11中的数据进行后续的业务逻辑处理。对于链路d而言,则是仅针对数据处理请求a12和b12中的数据进行后续的业务逻辑处理。步骤350,通过为业务逻辑处理提供数据关联查询服务的数据中间件,在各链路上对去重处理的数据进行业务逻辑处理。其中,每一链路挂载一个数据中间件,且不同链路挂载的数据中间件之间相互同步。可选地,同步可以是定时触发,也可以是某一链路挂载的数据中间件发生了数据写操作即触发,在此并未加以限定。需要说明的是,同步,可以是配置某一链路挂载的数据中间件作为基准进行,也可以在各链路所挂载数据中间件之间进行。举例来说,链路a、b、c分别挂载数据中间件a1、b1、c1,那么,既可以将数据中间件a1作为基准,使得数据中间件b1、c1与该基准同步;还可以循环进行,即先进行数据中间件a1与数据中间件b1之间的同步,再进行数据中间件b1与数据中间件c1之间的同步。上述同步方式可根据应用场景的实际需要灵活地配置,本实施例并未对此作出具体限定。可选地,数据中间件可以是数据库、共享内存。在一实施例中,数据中间件包括挂载于链路的数据库。相应地,同步,实质是在不同链路所挂载数据库之间进行源数据表与目的数据表的同步。此处,源数据表和目的数据表来源于不同的数据库,也可以理解为,源数据表和目的数据表作用于不同的链路。例如,如图5所示,链路151挂载数据库1591,而链路151’挂载数据库1591’,则,源数据表来源于链路151所挂载的数据库1591,目的数据表来源于链路151’所挂载的数据库1591’。数据同步模块152用于实现源数据表与目的数据表之间的同步,每一链路各配置一数据同步模块152。可以理解,不同链路配置数据同步模块,避免了各链路之间的相互干扰,保持各链路的独立性,防止某一条链路出现故障对数据处理过程中实时性所造成的影响,充分保障了数据处理过程的稳定性和可靠性。值得一提的是,对于不同链路所配置的数据同步模块,同步原理是相同的,也即是,数据同步模块对于不同链路而言是通用的,以此提高数据同步模块的适用性和可扩展性。在另一实施例中,数据中间件包括挂载于链路的数据库和共享内存。那么,同步,不仅是在不同链路所挂载数据库之间进行源数据表与目的数据表的同步,而且会在同一链路所挂载的数据库中的数据表与共享内存之间进行。可选地,数据库中数据表存储了与业务逻辑处理相关的基础数据,而共享内存则用于存储与业务逻辑处理相关的常用数据,也即是,进行业务逻辑处理时,共享内存优先提供数据关联查询服务,即优先读取共享内存中的常用数据。由此,通过数据库与共享内存的相互配合,极大地提高了数据存放和数据读取的性能,进而提高了数据关联查询的时间,充分地保障了数据传输处理过程中的实时性。可选地,共享内存为哈希表,使得数据存放和数据读取的复杂度为o(1),以进一步提高数据存放和数据读取的性能。例如,如图6所示,对于链路151而言,同时挂载了数据库1591和共享内存1593;对于链路151’而言,同时挂载了数据库1591’和共享内存1593’。数据同步模块152用于实现源数据表与目的数据表之间的同步,数据同步模块152’用于实现数据表与共享内存之间的同步,每一链路各配置一数据同步模块152和一数据同步模块152’。同理于图5中示出的数据同步模块152,图6中示出的数据同步模块152、数据同步模块152’可保持各链路的独立性,且具有适用性和可扩展性。由此,基于不同链路所挂载的数据中间件之间的相互同步,便可保证各链路的并行处理方式得以实现。也即是,各链路上,便可通过所挂载的数据中间件提供的数据关联查询服务,同时对去重处理的数据进行业务逻辑处理。其中,业务逻辑处理包括但不限于:数据统计、数据关联、数据过滤等,与不同应用场景中的具体业务相关,在此不进行具体限定。步骤370,将各链路上完成业务逻辑处理的数据合并,并对合并的数据进行去重处理。由于各链路所挂载的数据中间件之间是相互同步的,也即是,数据中间件为业务逻辑处理提供相一致的数据关联查询服务,那么,各链路上,相同的数据在进行业务逻辑处理之后,所得到的数据仍然相同,故而,在数据的进一步传输之前,需要对各链路合并的数据进行去重处理,从而进一步保证数据传输处理过程中的实时性。仍以前述例子进行说明,在链路c上,进行业务逻辑处理的是数据处理请求a11中的数据a和数据处理请求b11中的数据b。在链路d上,进行业务逻辑处理的是数据处理请求a12中的数据a和数据处理请求b12中的数据b。那么,对于数据处理请求a11和数据处理请求a12中的数据a而言,在进行业务逻辑处理之后,所得到的数据相同。而对于数据处理请求b11和数据处理请求b12中的数据b而言,在进行业务逻辑处理之后,所得到的数据也相同。基于此,在去重处理之后,被进一步传输的数据,仅包含一份数据a进行业务逻辑处理之后所得到的数据、以及一份数据b进行业务逻辑处理之后所得到的数据。通过如上所述的过程,设计了一个高可靠和实时的dtpbs(datatransferprocessingback-endsystem,后台数据传送处理系统),在数据传输处理过程中兼顾实时性和可靠性。在一应用场景中,当用户设备遭遇ddos攻击时,后台将接收到该用户设备发起的大量数据处理请求,而造成流量很大的极端情况,通过本发明所构建的dtpbs,便可实时可靠地封堵被攻击用户设备所产生的极大流量,数据传输处理过程中的延迟从3s降低至1s以内,从而有效地防止了恶意流量占用数据带宽。请参阅图7,在一示例性实施例中,数据中间件包括数据库。相应地,在不同链路所挂载数据库之间进行源数据表与目的数据表的同步的步骤可以包括以下步骤:步骤410,获取为进行源数据表与目的数据表同步而配置的唯一字段名。首先,结合表1,对数据库的相关定义进行如下说明。表1序号学号姓名性别年龄1001a男202002b女21如表1所示,每一行数据视为数据表的一条记录,例如,序号1、学号001、姓名a、性别男、年龄20视为一条记录,序号2、学号002、姓名b、性别女、年龄21视为一条记录。针对每一条记录,均包含“序号”、“学号”、“姓名”、“性别”、“年龄”等字段。以mysql数据库为例,假设“学号”字段通过unique约束,则“学号”字段的字段名视为唯一字段名,也可以理解为,数据表中的每一条记录都是通过唯一字段名唯一标识的。例如,序号为1的记录通过唯一字段名“001”唯一地标识,序号为2的记录通过唯一字段名“002”唯一地标识。当然,根据应用场景的实际需要,进行unique约束的字段并不局限于“学号”字段,也可以同时对“学号”字段和“姓名”字段进行unique约束,本实施例并非对此构成限定。基于此,对于进行了unique约束的字段可视为属于主键(uniquekey)。相应地,记录中的字段可配置一主键标记,用于指示记录中的该字段是否属于主键。例如,“001”字段的主键标记指示“001”字段属于主键,“002”字段的主键标记指示“002”字段属于主键。“1”字段、“a”字段、“男”字段、“20”字段、“2”字段、“b”字段、“女”字段、“21”字段的主键标记则指示上述字段均不属于主键。进一步地,记录中的字段还被配置了字段类型和字段长度。其中,字段类型用于指示记录中该字段的数据类型,例如,int型;字段长度则用于指示记录中该字段的字节数。为此,关于记录中的字段,字段信息至少包括:主键标记、字段类型和字段长度。其次,可以理解,源数据表与目的数据表之间的同步可以是针对所有记录,也可以是基于某些记录,为此,本实施例中,源数据表与目的数据表之间的同步取决于配置的唯一字段名。也就是说,同步,仅针对所配置唯一字段名唯一表示的记录,以此保证数据同步效率。在此说明的是,配置,根据应用场景的实际需要进行,例如,对数据同步效率要求较高的应用场景,便可确定与业务逻辑处理相关的若干常用数据所在记录,并配置用于唯一标识上述记录的唯一字段名,以进行源数据表与目的数据表之间的同步。步骤430,从所述源数据表和所述目的数据表中分别提取该唯一字段名所标识的记录。如前所述,唯一字段名唯一地标识了数据表中的记录。那么,在获取到唯一字段名之后,便可在数据表中唯一地确定所标识的记录。仍结合表1进行说明,如果为进行源数据表与目的数据表同步而配置的唯一字段名为“002”,那么,便可从源数据表和目的数据表中分别提取得到唯一字段名“002”所标识的序号为2的记录。步骤450,根据提取记录中字段的字段信息,将提取到的记录对应存储至源缓存映射表和目的缓存映射表。其中,缓存映射表,实质是通过map(key,value)方式,对数据表中的记录进行存储的map缓存。此处,源缓存映射表对应源数据表,存储了源数据表中的记录;而目的缓存映射表对应目的数据表,存储了目的数据表中的记录。如图8所示,在一实施例中,字段信息包括主键标记,相应地,步骤450可以包括以下步骤:步骤451,对提取到记录中的字段进行遍历。步骤453,判断遍历到字段的主键标记是否指示遍历到的字段属于主键。如果遍历到字段的主键标记指示遍历到的字段属于主键,则跳转执行步骤455。反之,如果遍历到字段的主键标记指示遍历到的字段不属于主键,则跳转执行步骤457。步骤455,对遍历到的字段进行序列化,得到第一序列化数据。步骤457,对遍历到的字段进行序列化,得到第二序列化数据。直至完成提取到记录中字段的遍历,跳转执行步骤459,否则,返回执行步骤451,继续对提取到记录中的字段进行遍历。步骤459,以所述第一序列化数据作为键,以所述第二序列化数据作为该键的键值,对应存储至所述源缓存映射表和所述目的缓存映射表。结合表1进行说明,假设为进行源数据表与目的数据表同步而配置的唯一字段名为“001”,从源数据表中便可提取得到唯一字段名“001”所标识的序号为1的记录。该序号为1的记录包括:“1”、“001”、“a”、“男”、“20”等字段,其中,“001”字段属于主键,“001”、“a”、“男”、“20”等字段均不属于主键。通过遍历,“001”字段被序列化,得到第一序列化数据;而“001”、“a”、“男”、“20”等字段被序列化,形成第二序列化数据。那么,第一序列化数据作为key,而第二序列化数据作为value,通过map(key,value)方式,序号为1的记录则被存储至源缓存映射表。同理,从目的数据包中提取得到的记录,也将以map(key,value)方式,存储至目的缓存映射表。可选地,字段信息还可以包括字段类型和字段长度,用于指导缓存映射表为本次同步所实际需要分配的缓存资源,进而提高缓存资源的利用率。步骤470,通过所述源缓存映射表与所述目的缓存映射表之间的比较,差异化更新所述目的数据表。可以理解,如果源数据表发生了数据写操作,例如插入、删除、新增等,用于存储源数据表中记录的源缓存映射表也将随之更新,而使得源缓存映射表区别于目的缓存映射表,也就是说,通过比较源缓存映射表与目的缓存映射表,便可获知源数据表与目的数据表之间的差异。差异化更新,是指仅针对源数据表与目的数据表之间的差异,对目的数据包进行更新。在一实施例中,如图9所示,差异化更新过程可以包括以下步骤:步骤471,比较所述源缓存映射表与所述目的缓存映射表,得到差异化结果。其中,差异化结果,用于指示目的缓存映射表与源缓存映射表之间的差异。步骤473,对所述差异化结果进行反序列化,得到反序列化数据。应当理解,字段所进行的序列化,是为了将字段转换为指定格式数据,以方便于存储至缓存映射表,进而提升缓存映射表的利用率。例如,指定格式为二进制的字节流格式。由此,反序列化,实质是序列化的逆过程,是将缓存映射表中存储的指定格式数据解析为字段。其中,差异化结果即为缓存映射表中存储的指定格式数据,那么,反序列化数据即为解析得到的字段,该字段便指示了目的数据表中记录与源数据表中记录之间的差异。步骤475,将所述反序列化数据更新至所述目的数据表。在得到反序列化数据之后,即获知了目的数据表中记录与源数据表中记录之间的差异,便可进行目的数据表的更新,从而完成源数据表与目的数据表之间的同步。在上述实施例的作用下,实现了不同链路所挂载数据库之间的同步,使得各链路之间保持相互独立得以实施。请参阅图10,在一示例性实施例中,数据中间件包括挂载于同一链路的数据库和共享内存。其中,共享内存为第一哈希表。相应地,针对同一链路,在所述数据库中的数据表与共享内存之间进行同步的步骤可以包括以下步骤:步骤510,获取为进行数据表与共享内存同步而配置的唯一字段名。步骤530,从所述数据表中获取该唯一字段名所标识的记录。步骤550,根据获取记录中字段的字段信息,将获取到的记录更新至第一哈希表。进一步地,如图11所示,在一实施例中,字段信息包括主键标记,相应地,步骤550可以包括以下步骤:步骤551,对获取到记录中的字段进行遍历。步骤553,判断遍历到字段的主键标记是否指示遍历到的字段属于主键。如果遍历到字段的主键标记指示遍历到的字段属于主键,则跳转执行步骤555。反之,如果遍历到字段的主键标记指示遍历到的字段不属于主键,则跳转执行步骤557。步骤555,对遍历到的字段进行结构化,得到第一结构化数据。步骤557,对遍历到的字段进行结构化,得到第二结构化数据。直至完成获取到记录中字段的遍历,跳转执行步骤559,否则,返回执行步骤551,继续对获取到记录中的字段进行遍历。步骤559,以所述第一结构化数据作为键,以所述第二结构化数据作为该键的键值,更新至所述第一哈希表。上述同步过程与不同链路所挂载数据库之间的同步大致类似,下面就二者之间的区别对上述同步过程加以说明,二者之间的相同部分则不再重复描述。首先,共享内存为第一哈希表,也就是说,待同步对象是用于存储指定格式数据的缓存,而不同于数据库中的目的数据表。具体地,第一哈希表,实质是通过hash(key,value)方式,对数据表中的记录进行存储的hash缓存。为此,上述同步过程中,在获取到数据表中的记录之后,不是进行差异化更新,而是直接更新。也可以理解为,直接更新,是将获取记录中的字段转换为指定格式数据便可更新至第一哈希表,而无需比较数据表与第一哈希表之间的差异。其次,由于无需比较数据表与第一哈希表之间的差异,便不存在将指定格式数据解析为字段的过程,即免去了反序列化操作,为此,上述同步过程中,将获取记录中的字段转换为指定格式数据,是采用结构化操作实现的。换句话说,数据表与第一哈希表之间的同步过程,实质是在数据表中记录所包含字段与第一哈希表中指定格式数据之间进行的数据格式转换过程。在此说明的是,结构化操作中,数据格式转换与第一哈希表有关,也就是说,在第一哈希表创建时,即配置了第一哈希表中可存储数据的指定格式,那么,如何将记录中的字段转换为指定格式数据,只需要获知第一哈希表所配置的指定格式即可。通过上述过程,实现了同一链路所挂载数据库与共享内存之间的同步,使得以共享内存为主,以数据库为辅的数据关联查询服务得以为业务逻辑处理提供。回请参阅图10,在一示例性实施例中,上述同步过程还可以包括以下步骤:步骤570,对第一哈希表进行未更新处理。具体而言,获取所述第一哈希表中各键对应的时间戳,以根据获取到的时间戳,从所述第一哈希表中清除未更新的键及对应的键值。其中,时间戳用于指示第一哈希表中键的更新时间,也可以理解为,键的存储时间,还可以是,数据处理请求中数据的接收时间。如前所述,基于为进行数据表与第一哈希表同步而配置的唯一字段名,数据表中该唯一字段名所标识的记录都将被更新至第一哈希表中,如果本次同步过程中,第一哈希表中仍然存在未更新部分,则表示该未更新部分已不存在于数据表中,故而,便可从第一哈希表中清除。由此,随着同步过程的进行,第一哈希表中未更新部分可及时清除,避免第一哈希表满,从而提高第一哈希表的利用率。应当理解,对数据处理请求中的数据、合并的数据所进行的去重处理过程原理相同,区别仅在于输入对象不同,输出对象相应不同,为此,在对去重处理过程作进一步地详细说明之前,将针对数据处理请求中的数据、合并的数据进行如下定义说明,以便于后续更好地描述去重处理过程中存在于不同输入对象、输出对象的共性。其中,待处理数据包括所述数据处理请求中的数据、合并的数据。相应地,在一示例性实施例中,如图12所示,对待处理数据进行去重处理的步骤可以包括以下步骤:步骤610,获取所述待处理数据对应的数据标识。步骤630,根据所述数据标识对第二哈希表中的已接收数据标识进行冲突检测。首先,已接收数据标识,对应于后台链路已接收到数据处理请求中的数据。第二哈希表,是通过hash(key,value)方式,对已接收数据标识进行存储的hash缓存。也即是,当后台链路接收到数据处理请求,便可根据数据处理请求中的数据获取对应的数据标识,以便于存储至第二哈希表。具体地,以数据标识作为键,添加至第二哈希表。在此说明的是,第二哈希表中,键的键值可以是随机数,也可以是null,在此并未加以限定。由此,基于第二哈希表所实现的已接收数据标识存储,使得数据存放和数据读取的复杂度为o(1),进一步提高了数据存放和数据读取的性能,从而有利于保障数据传输处理过程中的实时性。当然,在其他实施例中,第二哈希表也可通过队列、双向链表、数组等形式替代,本实施例并非对此构成具体限定。其次,冲突检测,实质是在第二哈希表中进行数据标识的匹配查找。如果查找到第二哈希表中存在与数据标识匹配的已接收数据,便视为检测到冲突,则跳转执行步骤650。反之,如果未查找到第二哈希表中存在与数据标识匹配的已接收数据,便视为未检测到冲突,则返回执行步骤610。步骤650,如果检测到所述第二哈希表中存在与所述数据标识冲突的已接收数据标识,则丢弃所述待处理数据。针对待处理数据,当检测到冲突,表明后台链路已传输处理过相同数据,那么,通过去重处理,该待处理数据被丢弃,由此避免对相同数据重复进行业务逻辑处理,进而提高了业务逻辑处理效率,充分地保障了数据传输处理过程中的实时性。进一步地,在一示例性实施例中,对待处理数据进行去重处理步骤还可以包括以下步骤:在所述数据处理请求中数据的去重处理过程中,待所述冲突检测完成,根据所述数据标识更新所述第二哈希表。具体而言,待冲突检测完成,如果检测到第二哈希表中存在与数据标识冲突的已接收数据标识,则获取数据处理请求的接收时间,并根据接收时间,在第二哈希表中对检测到冲突的键进行时间戳更新。其中,该检测到冲突的键对应于与数据标识冲突的已接收数据标识。如果检测到第二哈希表中不存在与数据标识冲突的已接收数据标识,则以数据标识作为键,添加至第二哈希表。简言之,如果检测到冲突,则更新第二哈希表中已存储键所对应的时间戳;如果未检测到冲突,则为第二哈希表新增键。此外,在第二哈希表更新过程中,如果第二哈希表已满,则根据第二哈希表中各键对应的时间戳,从第二哈希表中淘汰对应时间戳指示数据接收时间最早的键。其中,时间戳用于指示第二哈希表中键的更新时间,也可以理解为,键的存储时间,还可以是,数据处理请求中数据的接收时间。在上述实施例的作用下,实现了最近最少使用数据的淘汰机制,极大地提升了去重处理的效率。下述为本发明装置实施例,可以用于执行本发明所涉及的数据处理方法。对于本发明装置实施例中未披露的细节,请参照本发明所涉及的数据处理方法的方法实施例。请参阅图13,在一示例性实施例中,一种数据处理装置900包括但不限于:请求接收模块910、第一去重模块930、业务处理模块950以及第二去重模块970。其中,请求接收模块910,用于通过配置的多条链路,并行接收经由接入层转发的数据处理请求,所述数据处理请求由至少一数据源并发至所述接入层。第一去重模块930,用于针对每一链路,对接收到数据处理请求中的数据进行去重处理。业务处理模块950,用于通过为业务逻辑处理提供数据关联查询服务的数据中间件,在各链路上对去重处理的数据进行业务逻辑处理,每一链路挂载一个数据中间件,且不同链路挂载的数据中间件之间相互同步。第二去重模块970,用于将各链路上完成业务逻辑处理的数据合并,并对合并的数据进行去重处理。需要说明的是,上述实施例所提供的数据处理装置在进行数据处理处理时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即数据处理装置的内部结构将划分为不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例所提供的数据处理装置与数据处理方法的实施例属于同一构思,其中各个模块执行操作的具体方式已经在方法实施例中进行了详细描述,此处不再赘述。请参阅图14,在一示例性实施例中,一种服务器1000,包括至少一处理器1001、至少一存储器1002、以及至少一通信总线1003。其中,存储器1002上存储有计算机可读指令,处理器1001通过通信总线1003读取存储器1002中存储的计算机可读指令。该计算机可读指令被处理器1001执行时实现上述各实施例中的数据处理方法。在一示例性实施例中,一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各实施例中的数据处理方法。上述内容,仅为本发明的较佳示例性实施例,并非用于限制本发明的实施方案,本领域普通技术人员根据本发明的主要构思和精神,可以十分方便地进行相应的变通或修改,故本发明的保护范围应以权利要求书所要求的保护范围为准。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1