技术领域
本发明涉及大数据技术领域,更具体地说,涉及到一种基于rocketmq中间件的大批量数据处理方法及系统。
背景技术
客户使用本管理系统,涉及到大批量数据CRUD(数据查询,数据新增,数据更新,数据删除),通常会用文档方式如Excel,提交需修改的数据给本管理系统,本管理系统上传到公司文件服务器,文件服务系统异步回调本管理系统,由本管理系统执行相关更新操作,本管理系统执行完毕后通知文件系统,文件系统通知客户执行结果。
随着应用的数据量成倍增长,数据库应用的数量已达百万级别,需要更新数据如果达到百万级别的数量,本管理系统更新数据时长就会成倍增加,文件服务系统等待本系统的回应时间也急剧变长,可能出现等待超时或其他错误,导致客户无法得知执行结果,影响产品使用体验,对此做出优化。
本发明内容
为了克服现有技术的不足,本发明提供一种基于rocketmq中间件的大批量数据处理方法用来解决文件系统等待时间长以及Oracle的IO压力比较大的问题。
本发明解决其技术问题所采用的技术方案是:提供一种基于rocketmq中间件的大批量数据处理方法,包括以下步骤:
步骤一:从客户端上传数据文件至管理系统后台;
步骤二:所述文件服务系统定时轮询所述数据文件,所述数据文件经过管理系统后台解析,生成若干个特定格式的数据;
步骤三:所述管理系统后台将若干个特定格式的数据发送至rocketmq;
步骤四:数据CRUD后台从所述rocketmq拉取的若干个特定格式的数据进行处理。
优选地,在从客户端上传数据文件至管理系统后台之前,所述步骤还包括:
预先将所述管理系统后台与所述rocketmq建立长连接。
优选地,从客户端上传数据文件至管理系统后台之后,所述步骤还包括:
所述管理系统后台检查所述数据文件的合法性;
优选地,所述管理系统后台检查所述数据文件的合法性,所述步骤包括:
当检查所述数据文件合法时,所述管理系统后台提交至文件服务系统;
当检查所述数据文件非法时,所述管理系统后台对所述数据文件进行清理。
优选地,当检查所述数据文件合法之后,所述步骤还包括:
所述管理系统后台向所述文件服务系统发送所述数据文件批量处理请求;
调用所述管理系统后台的处理接口;
所述管理系统后台提交至文件服务系统。
优选地,所述文件服务系统定时轮询所述数据文件之后,所述步骤还包括:
所述管理系统后台向所述文件服务系统发送目标通知,所述目标通知表示数据已经处理。
优选地,所述管理系统后台将若干个特定格式的数据发送至rocketmq之后,所述步骤还包括:
所述rocketmq接收到从所述管理系统后台的单个特定格式的数据文件;
预先设置Message Topic;
所述Message Topic以多Queue队列进行存储;
所述rocketmq内部的队列选择器采用Queue队列轮询算法进行轮询,以使得每一个Queue队列的消息投递数量均匀。
优选地,所述rocketmq内部的队列选择器采用Queue队列轮询算法进行轮询之后,所述步骤还包括:
所述数据CRUD后台对所述Message Topic进行监听。
优选地,数据CRUD后台从所述rocketmq拉取的若干个特定格式的数据进行处理之后,所述步骤还包括:
所述数据CRUD后台将单个特定格式的数据文件对应的个数据处理结果逐条缓存至数据库;
当所有数据处理完成之后,从所述缓存数据库中提取全部处理结果,生成一个Excel回执文件;
将所述Excel回执文件发送至所述文件服务系统。
一种基于rocketmq中间件的大批量数据处理系统,所述系统包括:
上传单元,用于从客户端上传数据文件至管理系统后台;
轮询单元,用于所述文件服务系统定时轮询所述数据文件,所述数据文件经过管理系统后台解析,生成若干个特定格式的数据;
发送单元,用于所述管理系统后台将若干个特定格式的数据发送至rocketmq;
处理单元,用于数据CRUD后台从所述rocketmq拉取的若干个特定格式的数据进行处理。
本发明的有益效果是:从客户端上传数据文件至管理系统后台,所述文件服务系统定时轮询所述数据文件,所述数据文件经过管理系统后台解析,生成若干个特定格式的数据,所述管理系统后台将若干个特定格式的数据发送至rocketmq,数据CRUD后台从所述rocketmq拉取的若干个特定格式的数据进行处理,从而减少文件系统等待时间,避免文件系统超时,并且一定程度上降低Oracle的IO压力,进而提高了文件管理系统更新数据的效率,提高用户的使用体验。
附图说明
图1是一种基于rocketmq中间件的大批量数据处理方法的流程示意图。
图2是一种基于rocketmq中间件的大批量数据处理系统的功能模块图。
图3是一种基于rocketmq中间件的大批量数据处理系统流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
以下结合具体实施例对本发明的具体实现进行详细描述:
实施例一:
图1示出了本发明实施例一提供的一种基于rocketmq中间件的大批量数据处理方法的实现流程,为了便于说明,仅示出了与本发明实施例相关的部分,详述如下:
在步骤S101中:从客户端上传数据文件至管理系统后台;
在本申请实施例中,所述管理系统后台用于专门给前端页面提供除文件系统和数据CRUD以外的服务支撑,客户端可以为PC、手机等终端,从客户端上传数据文件至管理系统后台。
优选地,在从客户端上传数据文件至管理系统后台之前,所述步骤还包括:
预先将所述管理系统后台与所述rocketmq建立长连接。
在步骤S102中,所述文件服务系统定时轮询所述数据文件,所述数据文件经过管理系统后台解析,生成若干个特定格式的数据;
在本申请实施例中,所述文件服务系统用于提供文件存储和文件下载,所述管理系统后台用于给前端页面提供除文件系统和数据CRUD以外的服务支撑,所述管理系统后台的处理接口接收到文件服务系统的请求后,把数据文件解析成一条一条特定格式的数据,逐条送给Ali RocketMq。
优选地,从客户端上传数据文件至管理系统后台之后,所述步骤还包括:
所述管理系统后台检查所述数据文件的合法性;
优选地,所述管理系统后台检查所述数据文件的合法性,所述步骤包括:
当检查所述数据文件合法时,所述管理系统后台提交至文件服务系统;
当检查所述数据文件非法时,所述管理系统后台对所述数据文件进行清理。
优选地,当检查所述数据文件合法之后,所述步骤还包括:
所述管理系统后台向所述文件服务系统发送所述数据文件批量处理请求;
调用所述管理系统后台的处理接口;
所述管理系统后台提交至文件服务系统。
在步骤S103中,所述管理系统后台将若干个特定格式的数据发送至rocketmq;
在本申请实施例中,rocketmq由阿里研制的一个典型的消息中间件收发消息的模型,是一个队列模型的消息中间件,具有高性能、高可靠、高实时以及分布式的效果。所述管理系统后台将若干个特定格式的数据发送至rocketmq。
优选地,所述管理系统后台将若干个特定格式的数据发送至rocketmq之后,所述步骤还包括:
所述rocketmq接收到从所述管理系统后台的单个特定格式的数据文件;
预先设置Message Topic;
所述Message Topic以多Queue队列进行存储;
所述rocketmq内部的队列选择器采用Queue队列轮询算法进行轮询,以使得每一个Queue队列的消息投递数量均匀。
优选地,所述rocketmq内部的队列选择器采用Queue队列轮询算法进行轮询之后,所述步骤还包括:
所述数据CRUD后台对所述Message Topic进行监听;
在步骤S104中,数据CRUD后台从所述rocketmq拉取的若干个特定格式的数据进行处理。
在本申请实施例中,所述数据CRUD后台用于专门处理大批量数据的查询/新增/更新/删除操作,异步处理能力,数据CRUD后台从所述rocketmq拉取的若干个特定格式的数据进行处理。
优选地,数据CRUD后台从所述rocketmq拉取的若干个特定格式的数据进行处理之后,所述步骤还包括:
所述数据CRUD后台将单个特定格式的数据文件对应的个数据处理结果逐条缓存至数据库;
当所有数据处理完成之后,从所述缓存数据库中提取全部处理结果,生成一个Excel回执文件;
将所述Excel回执文件发送至所述文件服务系统。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,所述的存储介质,如ROM/RAM、磁盘、光盘等。
实施例二:
图2示出了本发明实施例二提供的一种基于rocketmq中间件的大批量数据处理系统的结构,为了便于说明,仅示出了与本发明实施例相关的部分,详述如下:
上传单元201,用于从客户端上传数据文件至管理系统后台;
轮询单元202,用于所述文件服务系统定时轮询所述数据文件,所述数据文件经过管理系统后台解析,生成若干个特定格式的数据;
发送单元203,用于所述管理系统后台将若干个特定格式的数据发送至rocketmq;
处理单元204,用于数据CRUD后台从所述rocketmq拉取的若干个特定格式的数据进行处理。本发明实施例中,从客户端上传数据文件至管理系统后台,所述文件服务系统定时轮询所述数据文件,所述数据文件经过管理系统后台解析,生成若干个特定格式的数据,所述管理系统后台将若干个特定格式的数据发送至rocketmq,数据CRUD后台从所述rocketmq拉取的若干个特定格式的数据进行处理,从而减少文件系统等待时间,避免文件系统超时,并且一定程度上降低Oracle的IO压力,进而提高了文件管理系统更新数据的效率,提高用户的使用体验。各单元的具体实施方式可参考实施例一的描述,在此不再赘述。
实施例三:
图3示出了本发明实施例三提供的一种基于rocketmq中间件的大批量数据处理系统流程图。,为了便于说明,仅示出了与本发明实施例相关的部分,其中包括:
预热阶段
首先,管理系统作为消息生产方,预先和Ali RocketMq建立长连接,预先指定Message Topic,为消息的主题,用来区分不同生产方的消息。
数据CRUD后台作为消息消费方,与RocketMq一直处在长连接状态,随时监听RocketMq的指定的Message Topic消息,一旦有新消息出现立马进行消费。
操作阶段
客户在前端提交数据文件,前端会将文件提交给管理系统后台;
管理系统后台检查文件的合法性后,提交给文件服务系统;
文件服务系统通过每3分钟一次轮询,发现有管理系统后台提交数据批量处理请求,回调[管理系统后台]的处理接口;
对于这一步骤,如果按旧系统处理流程,文件服务系统需要一直等待管理系统的最终处理结果,连接不能断开,连接无法释放,而管理系统后台处理数据可能需要花费很长时间,如果数据量达到百万级别时,管理系统后台的处理耗时就无法预估,而文件系统等待的时间也无法预估,网络资源就一直占用,文件服务系统会一直阻塞于此,可能无法处理其他系统的请求,这是灾难性的结果。由此,对旧系统处理进行改造成新系统。
在新系统情况下,管理系统后台通知文件服务系统“数据已经处理”,此时文件服务系统不需要继续等待本系统,断开与本系统的连接,释放网络资源,之后它就可以执行其他任务。
管理系统后台的处理接口接收到文件服务系统的请求后,把数据文件解析成一条一条特定格式的数据,逐条送给Ali RocketMq;
RocketMq在接收到管理系统后台的消息投递后,会预先设置Message Topic(消息主题),
Message Topic在实际存储的过程中,采用了多Queue队列的方式,RocketMq内部的队列选择器,采取“Queue队列轮询算法”,尽可能保证每一个Queue队列的消息投递数量均匀。
数据CRUD后台通过监听Message Topic,每次从RocketMq拉取一条数据,通过业务处理,往Oracle数据库更新或插入数据,因此一定程度上降低oracle IO压力。
同时数据CRUD后台会将数据处理结果(例如数据是否更新成功,更新失败具体原因例如数据长度超出限长,数据不符合公司的业务要求等等),逐条存入缓存数据库,等到最后一条消息处理完成后,再从缓存数据库提取全部处理结果,统一生成一个Excel回执文件,此时最终处理结果才通知给文件服务系统;
文件服务系统得到Excel回执文件后通知到前端,客户即可下载Excel回执文件。
在本发明实施例中,从客户端上传数据文件至管理系统后台,所述文件服务系统定时轮询所述数据文件,所述数据文件经过管理系统后台解析,生成若干个特定格式的数据,所述管理系统后台将若干个特定格式的数据发送至rocketmq,数据CRUD后台从所述rocketmq拉取的若干个特定格式的数据进行处理,从而减少文件系统等待时间,避免文件系统超时,并且一定程度上降低Oracle的IO压力,进而提高了文件管理系统更新数据的效率,提高用户的使用体验。
在本发明实施例中,一种基于rocketmq中间件的大批量数据处理系统可由相应的硬件或软件单元实现,各单元可以为独立的软、硬件单元,也可以集成为一个软、硬件单元,在此不用以限制本发明。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各实施例的单元及算法步骤,能够以电子硬件或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。
专业技术人员可以对每个特定的应用来使用不同的方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉技术领域的人员在本发明揭露的技术范围内,可轻易想到变化或者替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
机译: 基于计算机的用于处理地下矿井中的多次潜水的方法,存在的介质,基于计算机的用于基于矿井中的矿物处理井底数据的方法的方法一个基于计算机的地下信息系统。根据地下矿井中的矿物来处理数据,并基于计算机对地下矿井中的数据进行处理的方法,仓储腿目前的计算机系统是基于计算机的,用于处理基于地下的一种形式的多次潜水。计算机根据地下矿井中的矿物质来处理数据u00e7o地下,以及基于计算机的数据处理方法
机译: 防止为中间件和应用程序执行而设计的系统中拒绝服务(DOS)攻击的系统和方法,以及在基于中间件设计和应用程序执行的系统中支持基于子网管理器(SA)访问的可靠连接(RC)的系统和方法
机译: 三层U城市系统的U城市门户结构和基于能够通过提供Web界面角色控制U城市中间件系统的基于U城市中间件系统的服务方法