本发明涉及数据采集领域,具体涉及一种政务数据采集系统及其方法。
背景技术:
随着电子办公化的普及,各政府部门也加入了此行列。由于政府部门常常需要通过网络发布各种与人们日常生活息息相关的信息,因此,与政府部门相关的政务数据采集成为政府部门有效开展工作的重要工作。
目前,各级地方政府的数据不是统一开放的,政务数据的采集存在多源头、多类型和多渠道等问题,难以有效的进行政务数据的采集。
技术实现要素:
针对上述技术问题,本发明提供一种能够有效进行政务数据采集的政务数据采集系统及其方法。
本发明采用的技术方案为:
本发明的一实施例提供一种政务数据采集系统,包括数据采集客户端、传输中间件和数据采集服务端,数据采集客户端设置有多个具有不同接入方式的适配器、数据预处理单元、数据拆包单元和第一数据传输队列单元;数据采集服务端包括第二数据传输队列单元、数据组包单元、数据处理单元、数据分类单元和数据存储单元,其中,多个适配器用于同时采集具有不同的数据传输协议的多种数据源,采集的数据源依次经过数据预处理单元、数据拆包单元和第一数据传输队列单元处理后,由传输中间件发送给数据采集服务端的第二数据传输队列单元,并依次通过数据组包单元、数据处理单元、数据分类单元和数据存储单元进行处理。
可选地,数据预处理单元用于过滤掉采集的数据源中的无效数据和脏数据并将有效数据进行缓存;数据拆包单元用于将经数据预处理单元处理后的数据按照预设拆包协议格式进行拆分,拆分成多个个体较小的的数据包,并记录整个数据包的描述信息以及每个拆分后小数据包的描述信息,最终将这些描述信息与拆分后的数据包一并发送到第一数据传输队列单元;第一数据传输队列单元用于将经数据拆包单元处理后的数据进行排队并发送到传输中间件。
可选地,整个数据包的描述信息包括数据标识、数据名称、数据内容描述、数据发布时间、数据所属分类信息、数据关键字信息、数据定义版本、数据更新版本、数据提供单位、数据提供机构信息和数据定义信息、唯一ID值和整个数据包的MD5值;小数据包的描述信息包括所属整个数据包的UUID值、小数据包的MD5值、小数据包所属整个数据包的顺序、小数据包的名称、小数据包的大小。
可选地,传输中间件通过多线程的异步非阻塞方式将数据采集客户端的第一数据传输队列单元中的数据包发往数据采集服务端的第二数据传输队列单元中。
可选地,第二数据传输队列单元用于接收由传输中间件传输过来的数据包;数据组包单元用于将第二数据传输队列单元接收的零散的数据包按照预设组包协议格式进行组装成原数据包;数据处理单元用于将数据组包单元组装的原数据包进行数据业务关联,形成价值数据;数据分类单元用于将经数据处理单元处理后的数据分为结构化数据、半结构化数据和非结构化数据;数据存储单元用于将不同类型的数据分类进行分布式异构存储,其中,结构化数据采用关系型数据库,半结构化数据采用Mongodb和NFS方式进行存储,非结构化数据采用Hadoop集群的方式进行存储。
本发明的另一实施例提供一种政务数据采集方法,包括以下步骤:
S100:数据采集客户端通过具有多种接入方式的适配器同时采集具有不同数据传输协议的多种数据源,并将采集的数据源依次经历数据预处理、数据拆包和数据传输队列,并将处理后的数据源发送给传输中间件发进行发送;S200:数据采集服务端接收传输中间件发送的数据源,并将接收的数据源依次经历数据传输队列、数据组包、数据处理、数据分类和数据存储。
可选地,数据预处理用于过滤掉采集的数据源中的无效数据和脏数据并将有效数据进行缓存;数据拆包用于将经数据预处理单元处理后的数据按照预设拆包协议格式进行拆分,拆分成多个个体较小的的数据包,并记录整个数据包的描述信息以及每个拆分后小数据包的描述信息,最终将这些描述信息与拆分后的数据包一并发送到数据传输队列单元;数据采集客户端的数据传输队列用于将经数据拆包单元处理后的数据进行排队并发送到传输中间件。
可选地,整个数据包的描述信息包括数据标识、数据名称、数据内容描述、数据发布时间、数据所属分类信息、数据关键字信息、数据定义版本、数据更新版本、数据提供单位、数据提供机构信息和数据定义信息、唯一ID值和整个数据包的MD5值;小数据包的描述信息包括所属整个数据包的UUID值、小数据包的MD5值、小数据包所属整个数据包的顺序、小数据包的名称、小数据包的大小。可选地,传输中间件通过多线程的异步非阻塞方式将数据采集客户端的数据传输队列中的数据包发往数据采集服务端的数据传输队列中。
可选地,数据采集服务端的数据传输队列用于接收由传输中间件传输过来的数据包;数据组包用于将数据采集服务端的数据传输队列接收的零散的数据包按照预设组包协议格式进行组装成原数据包;数据处理用于将经数据组包组装的原数据包进行数据业务关联,形成价值数据;数据分类用于将经数据处理后的数据分为结构化数据、半结构化数据和非结构化数据;数据存储用于将不同类型的数据分类进行分布式异构存储,其中,结构化数据采用关系型数据库,半结构化数据采用Mongodb和NFS方式进行存储,非结构化数据采用Hadoop集群的方式进行存储。
本发明提供的政务数据采集系统及其方法,能够高效率的采集政务数据,可同时针对多种数据源的多种数据类型进行并发采集,并自动校验数据,生成数据的描述信息,打包存储转发,适合大规模进行数据采集。
附图说明
图1为本发明实施例提供的政务数据采集系统的结构示意图。
图2为本发明实施例提供的政务数据采集方法的流程示意图。
具体实施方式
以下结合附图对本发明的具体实施方式进行描述。
【实施例1】政务数据采集系统
图1为本发明实施例提供的政务数据采集系统的结构示意图。如图1所示,本发明提供的数据采集系统包括数据采集客户端、传输中间件和数据采集服务端。数据采集客户端用于采集政务数据并对采集的处理进行预处理、拆包和排队,然后将拆分处理后的数据发送给传输中间件,传输中间件将数据发送给数据采集服务端,数据采集服务端将接收的数据进行排队、组包、处理、分类和存储。
具体地,数据采集客户端针对不同的数据传输协议,如Http、FTP、TCP/IP以及WebService等提供多个具有不同接入方式的适配器,并设置有数据预处理单元、数据拆包单元和数据传输队列单元。多个适配器中的每个适配器适用于采集一种数据传输协议的数据,因此,通过多个适配器进行并发同时采集,能够将不同渠道、不同类型的数据源采集到数据采集客户端中来,可通过网络爬虫来采集相关数据。数据预处理单元用于过滤掉采集的数据源中的无效数据和脏数据并将有效数据进行缓存,例如,可使用大数据算法,如使用多重插补、单重插补、随机森林和多元回归算法等,针对汇集的数据进行去除无效性、删除重复性、纠正错误性等“脏数据”等。数据拆包单元用于将经数据预处理单元处理后的数据按照预设拆包协议格式进行拆分,拆分成多个个体较小的的数据包,并记录整个数据包的描述信息以及每个拆分后小数据包的描述信息,最终将这些描述信息与拆分后的数据包一并发送到数据传输队列单元,例如,客户端在启动的时候通过配置项设置相应参数,如拆分小包大小、拆分小包名称细则、拆分小包的顺序等,拆包时可采用多线程技术对文件按配置参数中的小包大小进行二进制拆分,将拆分的小包按配置参数中的名称细则进行命名,并按配置参数中的顺序细则进行存储。整个数据包的描述信息可包括数据标识、数据名称、数据内容描述、数据发布时间、数据所属分类信息、数据关键字信息、数据定义版本、数据更新版本、数据提供单位、数据提供机构信息和数据定义信息,如数据名字规则、填写规则、数据文件类型和规格等,以及数据唯一Id值(采用UUID生成)、整个数据包的MD5值等。小数据包的描述信息包括所属整个数据包的UUID值、小包的MD5值、小包所属整个数据包的顺序(int值)、小包的名称、小包的大小等。数据传输队列单元用于将经数据拆包单元处理后的数据进行排队并发送到传输中间件。一般,数据传输队列按照时间顺序将拆分后的数据包进行发送,然而,数据传输队列也可根据接收int类型的优先级参数来按照优先级来发送数据。可通过Netty技术、非阻塞IO技术等将数据发送给传输中间件,但并不局限于此。
传输中间件可通过多线程的异步非阻塞方式将数据采集客户端的数据传输队列单元中的数据包发往数据采集服务端的数据传输队列单元中,并保证数据的唯一准确的发送,同时支持断点续传以及错误补传等功能。由于整个数据包的描述信息中存有整个数据包的MD5,如果数据采集服务端接收到的数据的MD5在服务端数据库中已存在,则数据不会再次接收;如果不存在,则通知数据采集客户端发送拆分后的小数据包,每个小数据包被数据采集服务端接收后都有各自的MD5校验,验证完整性,如果中途传输失败,则数据采集服务端会在数据库中记录标记,同时要求数据采集客户端重传些小数据包,并支持断点续传,直到所有小数据包都传输完成并校验通过,通过数据组包单元完成组包操作,形成整个数据包,进而保证了数据的为准确的发送。数据采集客户端发送的小数据包在数据采集服务端会进行临时存储,并且在传输结束或中断的时候数据采集服务端会在服务器记录传完的小数据包的大小,及传输校验标志。当校验失败后,数据采集服务端会通知数据采集客户端重传此小数据包,同时会将此小数据包的相关描述信息以及当前的大小传输到客户端,数据采集客户端通过描述信息定位到此小数据包,并跳过数据采集服务端传过来的字节数,继续传输。补发有两种方式,第一种为,数据采集服务端会定时轮循数据库中检验失败的小包然后发送给数据采集客户端,如果三次还没有成功则放弃此小包的再次传输;第二种方式为,数据采集客户端可以通过页面检索到失败的小数据包的相关信息,然后手动出发此小数据包的再次补发传输,进而实现支持断点续传以及错误补传的功能。
数据采集服务端可包括数据传输队列单元、数组组包单元、数据处理单元、数据分类单元和数据存储单元。数据传输队列单元用于接收由传输中间件传输过来的数据包。数据组包单元对应于数据采集客户端中的数据拆包单元,执行数据拆包的逆过程,用于将数据传输队列单元接收的零散的数据包按照预设组包协议格式进行组装成原数据包,例如,当所有小数据包传输按MD5校验成功后,根据每个小数据包所携带的描述信息中的所属整个数据包的顺序以二进制的方式通过IO流进行拼接。数据处理单元用于将数据组包单元组装的原数据包进行数据业务关联,形成价值数据,例如,针对整个数据包描述文件中的数据所属分类信息(指定了行业细分)、数据关键字信息、数据提供单位、数据提供机构等相应参数进行相关业务数据汇集,形成有价值的数据集合;数据分类单元用于将经数据处理单元处理后的数据分为结构化数据、半结构化数据和非结构化数据,例如,可通过手动操作来将数据划分为不同类型的数据,其中,非结构化数据是指没有固定结构的数据,例如,所有格式的办公文档、文本、图片、各类报表、图像和音频、2020欧洲杯投注官网 信息;半结构化数据是指数据具有隐含结构但又不是以二维表之类的形式存在的,介于结构化和非结构化知识源之间的一种知识源,例如,存储员工的简历、类似XML、HTML、JSON等文件;结构化数据是指传统的关系数据模型、行数据,存储于数据库,可用二维表结构表示的数据,例如,存储于csv,excel的数据、二维表等。数据存储单元用于将不同类型的数据分类进行分布式异构存储,其中,结构化数据可采用关系型数据库,半结构化数据可采用Mongodb和NFS(Network File System:网络文件系统)方式进行存储,非结构化数据可采用Hadoop集群的方式进行存储,但并不局限于此。
在数据采集后,相关政务部门可通过发送相应的数据请求指令来从数据采集服务端的数据存储单元中获取相应的数据。
【实施例2】政务数据采集方法
图2为本发明实施例提供的政务数据采集方法的流程示意图。如图2所示,本发明的另一实施例提供一种政务数据采集方法,包括以下步骤:
S100:数据采集客户端通过具有多种接入方式的适配器同时采集具有不同数据传输协议的多种数据源,并将采集的数据源依次经历数据预处理、数据拆包和数据传输队列,并将处理后的数据源发送给传输中间件发进行发送。
在S100步骤中,针对不同的数据传输协议,如Http、FTP、TCP/IP以及WebService等提供多个具有不同接入方式的适配器,即每个适配器采集数据传输协议与其接入方式相适配的数据源,可通过网络爬虫来采集相关数据。数据预处理用于过滤掉采集的数据源中的无效数据和脏数据并将有效数据进行缓存;数据拆包用于将经数据预处理单元处理后的数据按照预设拆包协议格式进行拆分,拆分成多个个体较小的的数据包,并记录整个数据包的描述信息以及每个拆分后小数据包的描述信息,最终将这些描述信息与拆分后的数据包一并发送到数据传输队列单元,例如,客户端在启动的时候通过配置项设置相应参数,如拆分小包大小、拆分小包名称细则、拆分小包的顺序等,拆包时可采用多线程技术对文件按配置参数中的小包大小进行二进制拆分,将拆分的小包按配置参数中的名称细则进行命名,并按配置参数中的顺序细则进行存储。整个数据包的描述信息可包括数据标识、数据名称、数据内容描述、数据发布时间、数据所属分类信息、数据关键字信息、数据定义版本、数据更新版本、数据提供单位、数据提供机构信息和数据定义信息,如数据名字规则、填写规则、数据文件类型和规格等,以及数据唯一Id值(采用UUID生成)、整个数据包的MD5值等。小数据包的描述信息包括所属整个数据包的UUID值、小包的MD5值、小包所属整个数据包的顺序(int值)、小包的名称、小包的大小等。数据采集客户端的数据传输队列用于将经数据拆包单元处理后的数据进行排队并发送到传输中间件。一般,数据传输队列按照时间顺序将拆分后的数据包进行发送,然而,数据传输队列也可根据接收int类型的优先级参数来按照优先级来发送数据。可通过Netty技术、非阻塞IO技术等将数据发送给传输中间件,但并不局限于此。
传输中间件可通过多线程的异步非阻塞方式将数据采集客户端的数据传输队列中的数据包发往数据采集服务端的数据传输队列中。由于整个数据包的描述信息中存有整个数据包的MD5,如果数据采集服务端接收到的数据的MD5在服务端数据库中已存在,则数据不会再次接收;如果不存在,则通知数据采集客户端发送拆分后的小数据包,每个小数据包被数据采集服务端接收后都有各自的MD5校验,验证完整性,如果中途传输失败,则数据采集服务端会在数据库中记录标记,同时要求数据采集客户端重传些小数据包,并支持断点续传,直到所有小数据包都传输完成并校验通过,通过数据组包单元完成组包操作,形成整个数据包,进而保证了数据的为准确的发送。数据采集客户端发送的小数据包在数据采集服务端会进行临时存储,并且在传输结束或中断的时候数据采集服务端会在服务器记录传完的小数据包的大小,及传输校验标志。当校验失败后,数据采集服务端会通知数据采集客户端重传此小数据包,同时会将此小数据包的相关描述信息以及当前的大小传输到客户端,数据采集客户端通过描述信息定位到此小数据包,并跳过数据采集服务端传过来的字节数,继续传输。补发有两种方式,第一种为,数据采集服务端会定时轮循数据库中检验失败的小包然后发送给数据采集客户端,如果三次还没有成功则放弃此小包的再次传输;第二种方式为,数据采集客户端可以通过页面检索到失败的小数据包的相关信息,然后手动出发此小数据包的再次补发传输,进而实现支持断点续传以及错误补传的功能。
S200:数据采集服务端接收传输中间件发送的数据源,并将接收的数据源依次经历数据传输队列、数据组包、数据处理、数据分类和数据存储。
具体地,数据采集服务端的数据传输队列用于接收由传输中间件传输过来的数据包。数据组包对应于数据采集客户端中的数据拆包,执行数据拆包的逆过程,用于将数据传输队列接收的零散的数据包按照预设组包协议格式进行组装成原数据包,例如,当所有小数据包传输按MD5校验成功后,根据每个小数据包所携带的描述信息中的所属整个数据包的顺序以二进制的方式通过IO流进行拼接。数据处理用于将数据组包组装的原数据包进行数据业务关联,形成价值数据,例如,针对整个数据包描述文件中的数据所属分类信息(指定了行业细分)、数据关键字信息、数据提供单位、数据提供机构等相应参数进行相关业务数据汇集,形成有价值的数据集合。数据分类用于将经数据处理处理后的数据分为结构化数据、半结构化数据和非结构化数据,例如,可通过手动操作来将数据划分为不同类型的数据,其中,非结构化数据是指没有固定结构的数据,例如,所有格式的办公文档、文本、图片、各类报表、图像和音频、2020欧洲杯投注官网 信息;半结构化数据是指数据具有隐含结构但又不是以二维表之类的形式存在的,介于结构化和非结构化知识源之间的一种知识源,例如,存储员工的简历、类似XML、HTML、JSON等文件;结构化数据是指传统的关系数据模型、行数据,存储于数据库,可用二维表结构表示的数据,例如,存储于csv,excel的数据、二维表等。数据存储用于将不同类型的数据分类进行分布式异构存储,其中,结构化数据可采用关系型数据库,半结构化数据可采用Mongodb和NFS方式进行存储,非结构化数据可采用Hadoop集群的方式进行存储,但并不局限于此。
在数据采集后,相关政务部门可通过发送相应的数据请求指令来从数据采集服务端中获取相应的数据。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请实施例的精神和范围。这样,倘若本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。