一种基于消息队列的海量数据延迟导出方法
技术领域
本发明涉及数据管理技术,具体的说是一种基于消息队列的海量数据延迟导出方
法。
背景技术
随着大数据时代的到来,数据仓库技术的迅速发展,人们将越来越多的意识到数
据对企业的重要性。而用户从系统中导出明细数据,进行数据分析的需求也越来越多。海量
数据导出一直以来都是一个难题。传统的数据导出方案很难满足以上需求,其缺点如下:1、
提交导出请求后,需要等待页面响应,如数据量很大,需要等待很长时间,极端情况下可导
致session超时而退出;2、长时间的数据交互增加了数据库的负载,影响数据库性能,导致
正常业务时间延时;3、过多的导出请求可导致系统宕机;4、用户无法掌握文件导出进度情
况,如时间过长,通常会因为页面的假死现象而放弃。
发明内容
本发明针对目前技术发展的需求和不足之处,提供一种基于消息队列的海量数据
延迟导出方法。
本发明所述一种基于消息队列的海量数据延迟导出方法,解决上述技术问题采用
的技术方案如下:所述一种基于消息队列的海量数据延迟导出方法,基于消息队列,采用异
步架构,用户提交数据导出请求后无需等待,可继续做其他业务操作;采用分布式部署架
构,导出服务主机可按需扩展;任务执行采用多线程技术,根据数据量开辟线程数量;主要
包括如下步骤:1)用户通过前端web界面发起数据导出请求;2)Web服务器将请求发送给消
息服务器;3)消息服务器处理消息,生成导出任务;4)执行导出任务;5)生成数据文件;6)导
出完成后发送通知;7)下载数据文件。
优选的,所述3)消息服务器处理消息,生成导出任务,主要是指,消息服务器接收
到消息后,将请求信息写入任务表中,生成任务;服务主机数量实际应用时可按需扩展。
优选的,所述4)执行导出任务,主要步骤包括:
a)数据导出服务定期轮询任务表,认领任务,并执行导出任务;认领后的任务会在任务
表中更新任务状态;
b)任务执行采用多线程技术,系统根据数据量大小智能开辟线程数量;数据量越大,导
出速度越明显;
c)导出服务会根据数据库服务器资源占用情况,智能调整任务处理并发度;
d)数据导出服务及时更新任务完成进度;
e)通过文件导出监控功能查看任务状态,等待中任务,执行中任务;
f)对于时效性比较高的任务,通过催办功能,提高任务优先办理;
g)导出过程中若发生异常,系统会尝试重新执行,并记录次数,尝试多次失败后,系统
通知用户任务执行失败。
优选的,所述5)生成数据文件,导出数据文件暂时存放至ftp服务器。
本发明所述一种基于消息队列的海量数据延迟导出方法与现有技术相比具有的
有益效果是:通过本发明,通过内网进行文件导出,可减少网络传输的时间,加快文件导出
速率,缩短与数据库交互的时间,有效的减少了因数据导出请求,对正常业务的影响;有效
的解决了数据导出慢,过量的数据导出请求导致系统崩溃的难题;可按需增加服务资源,提
高并发度,加快请求响应速度,实现了数据安全、可靠、高效的自动化导出;其可应用于任何
需要数据导出服务的场景,尤其适用于具有频繁的海量数据导出需求的系统。
附图说明
附图1为所述基于消息队列的海量数据延迟导出方法的示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,对本发
明所述一种基于消息队列的海量数据延迟导出方法进一步详细说明。
本发明提出了一种基于消息队列的海量数据延迟导出方法,基于消息队列的异步
架构,用户提交数据导出请求后无需等待,可继续做其他业务操作,数据导出服务宕机也不
会影响正常的系统服务,服务恢复正常后即可处理之前的导出任务;采用分布式部署架构,
导出服务主机可按需扩展,按需增加服务资源;任务执行采用多线程技术,对于单个导出任
务,根据数据量大小智能开辟线程数量,有效的加快文件导出速度;导出服务及时更新任务
完成进度,用户可以实时查看任务状态,提高用户体验。本发明提供了安全、可靠、高效的海
量数据导出方式,可应用于任何需要数据导出服务的场景。
实施例:
本实施例所述一种基于消息队列的海量数据延迟导出方法,基于消息队列的异步架
构,如附图1所示,其实现过程包括如下步骤:1)用户发起数据导出请求;2)Web服务器将请
求发送给消息服务器;3)消息服务器处理消息,生成导出任务;4)执行导出任务;5)生成数
据文件;6)导出完成后发送通知;7)下载数据文件。
所述1)用户发起数据导出请求是指,用户通过前端web界面发起数据导出请求,系
统可返回友好提示,如:“您的导出请求已接收,请求号为XX,您前面还有XX个任务等待处
理!”。
所述2)Web服务器将请求发送给消息服务器是指,Web 服务器将请求信息发送给
消息服务,请求消息应至少包含如下信息项:任务名称、前台功能名称、对应导出服务类、请
求参数。
所述3)消息服务器处理消息,生成导出任务,主要是指,消息服务器接收到消息
后,将请求信息写入任务表中,生成任务,服务主机数量实际应用时可按需扩展。
所述4)执行导出任务,主要步骤包括:
a)数据导出服务定期轮询任务表,认领任务,并执行导出任务;认领后的任务会在任务
表中更新任务状态,避免其它的其他的导出服务重复执行;
b)任务执行采用多线程技术,系统根据数据量大小智能开辟线程数量,加快导出速度;
数据量越大,导出速度越明显;
c)导出服务会根据数据库服务器资源占用情况,智能调整任务处理并发度,保证既合
理利用资源又能防止服务器宕机,并且能够做到不影响正常交易业务;
d)数据导出服务及时更新任务完成进度,包括已导出XX条,已完成百分比,方便用户通
过文件导出监控功能查询正在执行任务的完成情况;
e)通过文件导出监控功能查看任务状态,等待中任务,可以查看排队情况,执行中任
务,可以查看完成进度情况;
f)对于时效性比较高的任务,通过催办功能,可以提高任务优先级,每个用户的催办使
用次数是有限的;
g)导出过程中如果发生异常,系统会尝试重新执行,并记录次数,尝试多次失败后,系
统通知用户任务执行失败;避免因偶然因素导致的执行失败,对系统可靠性造成的影响,提
高用户体验。
所述5)生成数据文件,主要是指,导出数据文件暂时存放至ftp服务器,在同一内
网之间进行网络传输,进一步提高导数性能,减少占用数据库资源的时间,有效的减少了对
正常交易业务的影响。
所述6)导出完成后发送通知是指,任务执行完成后,通知用户下载;通知方式可以
为:系统消息、短信、微信等。
所述7)下载数据文件是指,用户从ftp服务器上下载数据文件,同时,系统记录文
件下载时间及次数。
上述具体实施方式仅是本发明的具体个案,本发明的专利保护范围包括但不限于
上述具体实施方式,任何符合本发明的权利要求书的且任何所属技术领域的普通技术人员
对其所做的适当变化或替换,皆应落入本发明的专利保护范围。