一种海量数据采集的方法_2

文档序号:9453647阅读:来源:国知局
到待上传的数据文件夹中;其执行频率设置为5秒钟。
[0030]自动采集时间判断线程CollectDateTimeJudge,根据客户端设置的自动采集频率和时间,检查当前是否需要执行自动采集;如果需要执行数据采集,则在采集任务队列中增加自动采集的任务;其执行频率设置为10秒钟。
[0031]与服务器自动更新线程Collect1nDownAndUploadInfo,与采集服务通信,下载最新数据采集定义、往服务器上报包括客户端版本号和经销商采集时间点的信息;其执行频率设置为12小时。
[0032]规则日志线程TableLogBuffer,线程启动时,创建全局缓存对象BufferObj,构造对象时读取LOG.XML文件,将里面的dLog对象存在在_logList对象列表中;规则日志线程10秒检查一次缓存中日志对象列表有没有变化,有变化就重新生成Log.XML ;其执行频率设置为10秒钟。
[0033]文本日志线程TxtLogBuffer,线程启动时,创建全局缓存对象BufferObj,线程10秒钟循环一次,声明一个StringBuild,将生成的日志信息增加到里面,写入以日期命名的Txt日志文件中;其执行频率设置为10秒钟。
[0034]版本自动检查线程ThreadUpdate,执行时调用采集服务,自动比对客户单文件的版本与服务端的版本;当客户端需要升级时,则调用升级程序对需要升级的文件进行下载,解压,覆盖。其执行频率设置为24小时。
[0035]地方账户的安全保障:所有需要与服务器通信的客户端账号,均被分配一个唯一的密钥,每次申请通信时均需要使用唯一密钥、账号、密码验证,通过后才可进行文件传输,在数据文件传输过程中使用AES动态加密数据片段,且每次传输文件大小为24K,只有文件全部传输成功后,文件才可被使用;
传输时需要每次24K,并且进行token验证部分代码:byte [] buffer = new byte[24 * 1024]; // 24KSystem.1nt32 sizeRead = 0;
AES myAES = new AES(company.CompanyGuid);
while ((sizeRead = StreamToZip.Read(buffer, 0, buffer.Length)) > 0)
{
byte[] mw = myAES.AESEncrypt(buffer, 0, sizeRead);
Il
company.DataDealProxy.AppendFile (strToken, buffer, buffer.Length,up1adFileTempName);
Il每次传输完24K字节都要暂停I秒,这样每个客户端最大的网络带宽占用为24K字节/秒
Thread.Sleep(1000);
}
系统整体容错支持:在客户端采集过程中,如果出现错误,出错线程自身会不断尝试(限定最大尝试次数、时间间隔);增加采集业务检查线程,定时巡检,对于巡检结果进行提示、发邮件、或自动处理,如:遇到服务器断电或网络不通等状况,当问题处理后,客户端自动会将未能按期进行采集的数据自动识别并采集;
文件传安全性及控制:输数据采集服务需要接收采集客户端的压缩文件上传,所有正在传输的文件均以.dat的后缀保存在传输目录中;一旦文件完成上传,由客户端发起文件的改名操作,数据采集服务把文件后缀从.dat修改成.rar,并移动文件至文件导入工作目录中,并同时通知文件导入功能。
[0036]系统通过下面参数来设定文件传输目录、和导入工作目录:
〈!一传输文件路径一>
〈add key=〃TransPath〃 value=〃D:\DCS\DataTrans〃/>
<!—待导入处理的文件路径一>
〈add key="DataPath" value="D:\DCS\Data\"/>
数据采集服务在宕掉时,文件传输目录中有可能会遗漏.rar后缀的待导入文件,系统会定期检查文件传输目录中的.rar后缀结束的文件,若有则会把它转移到导入工作目录中进行后续的导入处理。
[0037]在文件导入时如果发生错误,再某一个时间后会重新加入待处理队列代码: bool inlist = _beforeDealFileList.ContainsKey(f1.Name) | | _
dealingFileList.ContainsKey(f1.Name); if (!inlist)
{
//add增加对异常文件的重新处理
if (_errorFileList.ContainsKey(f1.Name))
{
//如果此文件以前导入出了错,并且上次导入时间距现在大于27分钟,就再重新加入导入列表中
if ((DateTime.Now - _errorFileList[f1.Name]).TotalMinutes> 27)sinfos.Add(f1.LastffriteTime.ToString("yyyy-MM-dd HH:mm:ss.fff^) + f1.Name, f1.Name);
}
else
sinfos.Add(f1.LastffriteTime.ToString(〃yyyy-MM_dd HH:mm:ss.fff〃)+ f1.Name, f1.Name);
}
采集方法的实施主要分为服务器端环境搭建及客户端的部署,其中客户端为绿色版,解压后可以直接使用;
上述【具体实施方式】仅是本发明的具体个案,本发明的专利保护范围包括但不限于上述【具体实施方式】,任何符合本发明的一种海量数据采集的方法的权利要求书的且任何所属技术领域的普通技术人员对其所做的适当变化或替换,皆应落入本发明的专利保护范围。
【主权项】
1.一种海量数据采集的方法,其特征在于,具体实现过程为:首先在子数据库安装采集客户端,该采集客户端与数据采集web服务、windows服务组成异步处理采集系统;母数据库通过该异步处理采集系统采集子数据库数据并按规则下发数据给子数据库的采集客户端。2.根据权利要求1所述的一种海量数据采集的方法,其特征在于,所述采集客户端支持的数据库类型包括:SQL SERVER、Oracle、Mysql、Sybase。3.根据权利要求1所述的一种海量数据采集的方法,其特征在于,安装有采集客户端的计算机通过数据库配置接口连接到安装母数据库的后台服务器,采集客户端对数据采集成功后,将该数据使用文件处理,这里的文件处理使用压缩文件的方式,每个压缩文件中均包含一个文本文件和一个数据描述xml文件,其中文本文件为实际采集数据,数据描述xml文件为文本文件中数据的规则;服务器将两个文件一起读取解析后再转换为可使用数据。4.根据权利要求1所述的一种海量数据采集的方法,其特征在于,安装有母数据库的后台服务器通过异步排队机制支持采集客户端的并发请求操作,母数据库采集端对所有采集客户端上传的文件首先汇总到服务器的某个文件夹下,然后定期将文件更新到数据处理队列中,数据处理完毕后会将原数据包转移到另一个备份文件夹中。5.根据权利要求4所述的一种海量数据采集的方法,其特征在于,上述后台服务器采用异步排队处理模式进行数据传输,且该异步处理使用以下多线程完成: 数据上传线程,检查客户端的数据文件夹中是否有已采集完毕的数据,有则加入上传队列;调用采集上传服务进行token验证,如果验证通过则将数据文件包分解成若干个24K的文件包进行传输;在传输的过程中,当遇到网络问题时,进行多次传输尝试,如果多次后仍失败,则在线程下次执行时继续尝试传输; 米集线程,检查米集任务队列中是否有待执行的米集任务;根据米集任务中的?目息执行采集动作,并将采集的数据进行压缩打包,放到待上传的数据文件夹中; 自动采集时间判断线程,根据客户端设置的自动采集频率和时间,检查当前是否需要执行自动采集;如果需要执行数据采集,则在采集任务队列中增加自动采集的任务; 与服务器自动更新线程,与采集服务通信,下载最新数据采集定义、往服务器上报包括客户端版本号和经销商采集时间点的信息; 规则日志线程,线程启动时,创建全局缓存对象,构造对象时读取LOG.XML文件,将里面的dLog对象存在在_logList对象列表中;规则日志线程10秒检查一次缓存中日志对象列表有没有变化,有变化就重新生成Log.XML ; 文本日志线程,线程启动时,创建全局缓存对象,线程10秒钟循环一次,声明一个StringBuild,将生成的日志信息增加到里面,写入以日期命名的Txt日志文件中; 版本自动检查线程,执行时调用采集服务,自动比对客户单文件的版本与服务端的版本;当客户端需要升级时,则调用升级程序对需要升级的文件进行下载,解压,覆盖。6.根据权利要求5所述的一种海量数据采集的方法,其特征在于,在数据采集过程中,数据文件传输时使用AES加密,加密的秘钥为采集服务对每个客户端生成的一个36位GUID字符串,使得每个客户端的秘钥均不一样,保证数据传输中的安全性,具体为: 所有需要与服务器通信的客户端账号,均被分配一个唯一的密钥,每次申请通信时均需要使用唯一密钥、账号、密码验证,通过后才可进行文件传输,在数据文件传输过程中使用AES动态加密数据片段,且每次传输文件大小为24K,只有文件全部传输成功后,文件才可被使用。7.根据权利要求5所述的一种海量数据采集的方法,其特征在于,后台服务器接收采集客户端的压缩文件上传,所有正在传输的文件均以.dat的后缀保存在传输目录中;当文件完成上传时,由客户端发起文件的改名操作,数据采集服务把文件后缀从.dat修改成.rar,并移动文件至文件导入工作目录中,同时通知文件导入功能。
【专利摘要】本发明公开了一种海量数据采集的方法,具体实现过程为:首先在子数据库安装采集客户端,该采集客户端与数据采集web服务、windows服务组成异步处理采集系统;母数据库通过该异步处理采集系统采集子数据库数据并按规则下发数据给子数据库的采集客户端。该一种海量数据采集的方法与现有技术相比,可节省沟通成本,并且将经过清洗流程采集上来的数据转换为可供分析的模式,提高了数据质量和安全性,实用性强。
【IPC分类】G06F17/30, G06Q30/02
【公开号】CN105205687
【申请号】CN201510521135
【发明人】商希森, 付传伟
【申请人】浪潮通用软件有限公司
【公开日】2015年12月30日
【申请日】2015年8月24日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1