一种数据处理的方法及系统技术方案

技术编号:11872990 阅读:62 留言:0更新日期:2015-08-12 23:58
本发明专利技术提供了一种数据处理的方法及系统,能够高效、快速地处理数据。该方法包括:服务端装置将分组后的数据向多组客户端装置分发;客户端装置接收所述分组后的数据,并将该数据进行存储;客户端装置读取存储的所述数据,然后对读取的数据分片,再对每片数据分别作单线程处理。采用本发明专利技术的技术方案,解决了单个kafka客户端宕机时的数据接收与处理、以及多线程同时更新导致更新丢失的问题,且可以实现手动控制数据处理任务的暂停和重启,同时避免了数据积压或处理失败造成的数据丢失,提高了数据处理可靠性,保证了数据的准确性和实时性。

【技术实现步骤摘要】

本专利技术涉及计算机网络
,特别地涉及一种数据处理的方法及系统
技术介绍
随着计算机网络的广泛应用以及电子商务行业的快速发展,越来越多的人关注数据的重要性,尤其对于数据化运营来说,对数据的处理及分析,在降低运营成本的同时,还能大大提高运营方向的准确性,其中实时数据更是关注的焦点。但是对于海量实时数据的处理,一直是一个难点。在现有的技术中,对于海量实时数据的处理一般选用分布式消息队列,如kafka来进行消息的收发和管理。kafka分布式消息队列以关键字(topic)来进行消息管理,每个topic又分为多个分组(partit1n),以partit1n作为数据转移、存储及读取的最小单位。kafka分布式消息队列服务器端接收到数据后将每个topic的消息均匀的分布到多个partit1n上。Kafka消息队列客户端client根据指定的topic和partit1n num进行数据接收,因此每组Kafka消息队列客户端只能对应接收一个topic下不同partit1n的数据,且每个partit1n只会被一个Kafka消息队列客户端接收。Kafka消息队列客户端从数据队列接收到数据后,将数据持久化存储到数据库中,之后数据库按照相应的业务逻辑通过多线程并行处理的方式来处理数据,如果处理成功,更新数据标志位,标识已完成数据处理;如果数据处理失败,则从数据库读出未处理数据,重新进行处理。本专利技术人经过在本行业多年的实践经验,发现现有技术存在以下缺点:1、在使用过程中,如果应用kafka客户端意外宕机,就会导致该客户端对应接收的数据积压,无法处理,影响数据的实时性;2、现有方案中,数据处理任务只能由线程自己调度,无法实现数据处理的暂停和重启;3、由于现有方案是多线程同时处理数据,因此多条线程可能会同时处理一个数据,就会出现系统资源浪费及更新丢失的情况,无法实现高并发、高性能的处理消息;4、现有方案中,当数据处理失败时,需要从数据库中读取未处理的消息重新进行处理,如果积压了过多的数据未处理,数据库的I/O性能将会大大下降,从而导致处理效率降低。
技术实现思路
有鉴于此,本专利技术提供一种数据处理的方法及系统,解决了 kafka客户端意外宕机时的数据接收及处理、多线程同时更新导致更新丢失的问题,且可以实现手动控制数据处理任务的暂停和重启,以及减少直接与数据库的数据信息交互,从而提高了可靠性,功能稳定且处理性能尚。为实现上述目的,根据本专利技术的一个方面,提供了一种数据处理的方法。本专利技术的一种数据处理的方法包括:服务端装置将分组后的数据向多组客户端装置分发;客户端装置接收所述分组后的数据,并将该数据进行存储;客户端装置读取存储的所述数据,然后对读取的数据分片,再对每片数据分别作单线程处理。可选地,所述服务端装置包括kafka消息队列服务器端装置及任务协调装置,且所述客户端装置设置有kafka消息队列客户端装置。可选地,将该数据进行存储的步骤包括:持久化存储所述数据,以及缓存该数据;并且客户端装置读取存储的所述数据的步骤包括:客户端装置读取缓存的所述数据。可选地,客户端装置读取存储的所述数据,然后对读取的数据分片,再对每片数据分别作单线程处理的步骤包括:客户端装置中的数据分发单元定时读取数据,并根据数据的业务字段对数据进行分片,然后分发到客户端装置中不同的数据处理单元;各数据处理单元单线程处理接收到的数据。可选地,在所述对每片数据分别作单线程处理时,该方法还包括:在需要暂停或重启数据处理的情况下,所述数据分发单元将加锁或解锁指令分发至各所述数据处理单元以暂停或重启数据处理。根据本专利技术的另一方面,提供了一种数据处理的系统。本专利技术的一种数据处理的系统包括服务端装置和客户端装置,其中:所述服务端装置用于将分组后的数据向多组客户端装置分发;所述客户端装置包括:接收模块,用于接收所述分组后的数据,并将该数据进行存储;处理模块,用于读取存储的所述数据,然后对读取的数据分片,再对每片数据分别作单线程处理。可选地,所述服务端装置包括kafka消息队列服务器端装置及任务协调装置,且所述客户端装置中设置有kafka消息队列客户端装置。可选地,所述客户端装置还用于:持久化存储所述数据,以及缓存该数据;并且读取缓存的所述数据。可选地,所述处理模块包括数据分发单元和多个数据处理单元,其中:所述数据分发单元用于定时读取数据,并根据数据的业务字段对数据进行分片,然后分发到不同的所述数据处理单元;所述数据处理单元用于单线程处理接收到的数据。可选地,所述处理模块还用于:在需要暂停或重启数据处理的情况下,所述数据分发单元将加锁或解锁指令分发至各所述数据处理单元以暂停或重启数据处理。根据本专利技术的技术方案,服务端装置将分组后的数据向多组客户端装置分发,这样就避免了一组客户端意外宕机所引起的数据积压,从而保证了数据的实时性和处理效率;客户端装置接收所述分组后的数据,并将该数据进行持久化存储和缓存,每次读取数据时从缓存中读取,可以避免在数据处理失败的情况下,与硬盘数据库进行大量未处理的数据信息交换,造成数据库性能下降,从而释放硬盘空间,提高处理性能;客户端装置读取存储的所述数据,然后对读取的数据分片,再对每片数据分别作单线程处理,这样既提高了处理速度,又可以避免出现多线程同时处理数据导致更新丢失的问题,从而节省了内存资源,提高了处理性能;另外,本专利技术增加了一个内存数据库,其中存储有加锁指令和解锁指令,当需要进行数据处理的暂停和重启时,处理模块的数据分发单元将用户发出的指令分发到各数据处理单元进行相应操作,从而实现了手动控制数据处理任务的暂停和重启。【附图说明】附图用于更好地理解本专利技术,不构成对本专利技术的不当限定。其中:图1是根据本专利技术实施例的一种数据处理的方法的主要步骤的示意图。图2是根据本专利技术实施例的一种数据处理的方法的详细步骤流程图。图3是根据本专利技术实施例的一种数据处理的方法的kafka分布式消息队列工作原理示意图。图4是根据本专利技术实施例的一种数据处理的系统的主要模块示意图。【具体实施方式】以下结合附图对本专利技术的示范性实施例做出说明,其中包括本专利技术实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本专利技术的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。图1是根据本专利技术实施例的一种数据处理的方法的主要步骤的示意图。如图1所示,本专利技术实施例的一种数据处理的方法主要包括如下的步骤Sll至步骤S13。步骤Sll:服务端装置将分组后的数据向多组客户端装置分发。结合本专利技术的优选实施例,服务端装置为kafka消息队列的服务器端装置及任务协调装置,客户端装置设置有kafka消息队列的客户端装置当前第1页1 2 3 本文档来自技高网
...
一种数据处理的方法及系统

【技术保护点】
一种数据处理的方法,其特征在于,包括:服务端装置将分组后的数据向多组客户端装置分发;客户端装置接收所述分组后的数据,并将该数据进行存储;客户端装置读取存储的所述数据,然后对读取的数据分片,再对每片数据分别作单线程处理。

【技术特征摘要】

【专利技术属性】
技术研发人员:魏仁言孙海滨吕科
申请(专利权)人:北京京东尚科信息技术有限公司北京京东世纪贸易有限公司
类型:发明
国别省市:北京;11

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

1