基于共享缓存的数据采集系统及方法与流程

文档序号:15200138发布日期:2018-08-19 10:42阅读:370来源:国知局

本发明涉及大数据技术领域,具体地涉及一种基于共享缓存的数据采集系统及方法。



背景技术:

随着消费互联网的崛起,大数据分析与云计算技术的发展壮大,大数据产业已逐步从概念走向落地,得到了广泛的关注和重视,大数据已然掀起了新一轮商业浪潮。

2017年,大数据正式进入国家战略层面的规划:工信部印发《大数据产业发展规划(2016-2020年)》,特别提出加快推进大数据产业应用能力,到2020年,大数据相关产品和服务业务收入突破1万亿元,年均复合增长率保持30%左右。

国家围绕大数据的政策落地,将进一步提升企业对数据价值的意识,激发数据交易的增量市场规模;在市场方面,各行各业对大数据的依赖性和大数据行业的价值属性越来越高。

大数据和传统的数据相比,特点是数据量大、变化快、种类繁杂、真伪存疑。大数据是对所有目标数据的分析处理,不是传统的抽样分析处理,因而传统的数据采集处理方法已经不适用大数据的采集需求。对于大数据,需要采用新的具有更强的决策力、洞察发现力和流程优化能力的处理模式去处理海量、高增长率和多样化的信息资产。

大数据的采集主要是运用互联网技术进行远程数据采集,通过采集软件在互联网中进行广域的、大规模的、实时的采集和传递,经过多次汇聚和转发,最终发送给大数据平台作为分析和应用的数据源。

大数据的采集过程,主要是将目标数据从各类数据源采集到大数据平台的过程,大数据主要包括两类:一类是从oracle、postgresql等数据库、管理软件接口、文件、日志等采集的文字类结构化数据;另一类是从电子邮件、音视频、图片、网页、社交媒体等采集的非结构化数据。

目前大数据的采集面临的主要问题是大数据的数据源丰富而且多种多样。比如,结构化数据和非结构化数据的采集方法完全不同,不同类型的数据对实时性的要求也完全不同。具体而言,工业控制系统的生产性数据要求数据实时采集、秒级传输,对采集服务器和传输的网络链路产生持续的巨大压力;而财务类数据要求按周、月或季度定期采集与传输,对采集服务器和传输网络产生周期性冲击的压力,必须考虑数据采集过程中的数据处理问题。尤其是将现场数据的范围放到广域网分布的系统范围之后,大数据总和是多个现场数据的总和,当采集点总量达到tb(兆位元组)甚至pb(千兆位元组)、eb(百万兆位元组)时这个问题更加明显和棘手。



技术实现要素:

本发明的目的是提供一种基于共享缓存的数据采集系统及方法,该数据采集系统不仅可对各种类型的数据进行秒级频率的实时采集与传输,还可保证数据在传输过程中的安全性和完整性,尽可能减轻采集服务器和网络传输的压力。

为了实现上述目的,本发明提供一种基于共享缓存的数据采集系统及方法,该数据采集系统包括:数据采集端,用于通过多进程并发形式采集数据,并将所述数据存入至第一共享缓存区并封包上传;以及数据接收端,用于接收封包上传的所述数据,将所述数据存入至第二共享缓存区,并把所述第二共享缓存区内的所述数据写入数据库。

可选的,所述数据采集端还用于:对采集的所述数据进行数据过滤,只有时间戳和数据值同时变化的数据才能存入所述第一共享缓存区。

可选的,所述第一共享缓存区及所述第二共享缓存区只在设定的存储时效期内对所述数据进行存储。

可选的,所述第一共享缓存区及所述第二共享缓存区内的数据结构体采用哈希表的key-value方式存储所述数据。

可选的,所述数据结构体包括name属性、flages属性、state属性、value属性、type属性、message属性和/或time属性。

可选的,所述数据中的非结构化数据存放到message属性中,结构化数据存放到除message属性外的各个属性中。

相应地,本发明还提供一种基于共享缓存的数据采集方法,该数据采集方法包括:通过多进程并发形式采集数据,将所述数据存入至第一共享缓存区并封包上传;以及接收封包上传的所述数据,将所述数据存入至第二共享缓存区,并把所述第二共享缓存区内的所述数据写入数据库。

可选的,所述将所述数据存入至第一共享缓存区包括:对采集的所述数据进行数据过滤,只有时间戳和数据值同时变化的数据才能存入所述第一共享缓存区。

可选的,所述第一共享缓存区及所述第二共享缓存区只在设定的存储时效期内对所述数据进行存储。

可选的,所述第一共享缓存区及所述第二共享缓存区内的数据结构体采用哈希表的key-value方式存储所述数据。

可选的,所述数据结构体包括name属性、flages属性、state属性、value属性、type属性、message属性和/或time属性。

可选的,所述数据结构体中的非结构化数据存放到message属性中,结构化数据存放到除message属性外的各个属性中。

通过上述技术方案,本发明通过采用多进程并发形式和多级数据共享缓存传技术,对各种类型的数据进行统一的采集与传输,不仅可实现秒级频率的实时数据采集,还可保证数据在传输过程中的安全性和完整性,尽可能减轻采集服务器和网络传输的压力。

附图说明

图1是本发明一种实施方式提供的基于共享缓存的数据采集系统的流程图;

图2是本发明一种实施方式提供的数据采集端的第一共享缓存区的结构图;

图3是本发明一种实施方式提供的第一共享缓存区的存储结构图;

图4是本发明一种实施方式提供的数据接收端的第二共享缓存区的结构图;以及

图5是本发明一种实施方式提供的基于共享缓存的数据采集方法的流程图。

附图标记说明

1数据采集端2数据接收端

3数据库4数据接收程序

10数据源11数据源

12数据源30redis数据

100第一共享缓存区200第二共享缓存区

1000采集程序1001采集程序

1002采集程序

具体实施方式

以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。

图1是本发明一实施例提供的基于共享缓存的数据采集系统的流程图。如图1所示,本发明提供的数据采集系统可包括:数据采集端1,用于通过多进程并发形式采集数据,并将所述数据存入至第一共享缓存区100并封包上传;以及数据接收端2,用于接收封包上传的所述数据,将所述数据存入至第二共享缓存区200,并把所述第二共享缓存区内的所述数据写入数据库3。该数据采集系统通过采用多进程并发形式和多级数据共享缓存传技术,对各种类型的数据进行统一的采集与传输,不仅可实现秒级频率的实时数据采集,还可保证数据在传输过程中的安全性和完整性,尽可能减轻采集服务器和网络传输的压力。

此外,所述数据采集端1还用于:对采集的所述数据进行数据过滤,只有时间戳(代表该数据被生成的时间)和数据值同时变化的数据才能存入所述第一共享缓存区100,其它的数据可以舍弃。所采集的所述数据经过数据过滤再存入所述第一共享缓存区100,可保证每个数据都不同,使所述第一共享缓存区内100的数据紧密排列,不会造成空间浪费。

所述第一共享缓存区100及所述第二共享缓存区200只在设定的存储时效期内对所述数据进行存储,一旦超过存储时效期,所述数据就会被新的数据代替,以实现数据的更新,合理有效地利用共享缓存区的存储空间。

如图2和图4所示,所述第一共享缓存区100及所述第二共享缓存区200内的数据结构体可包括name属性、flages属性、state属性、value属性、type属性、message属性和/或time属性。所述数据中的非结构化数据,比如电子邮件、音视频、图片、网页、社交媒体等信息,可存放到message属性中;而结构化数据,比如数据库、管理软件接口、文件、日志等信息,可存放到除message属性外的各个属性中。本发明可根据实际数据类型和大小设置所述结构体中属性的数目和每个属性相应的字节数,比如对于结构化数据,数据结构体中就可以不设置message属性,而选择性地设置name属性、flages属性、state属性、value属性、type属性和/或time属性等。

如图3所示,所述第一共享缓存区100及所述第二共享缓存区200内的数据结构体s可采用哈希表的key-value方式存储所述数据。数字1~n代表存储的测点点名name,name1~n分别对应数据源1-n,箭头是指向下一个s值的指针。s中的name作为key,s本身就是value。所采集的数据经过数据过滤,也就是说,只有当s中的value(或message)及time在同时变化的情况下,该s才能进入共享缓存区。例如,在s11存储在name为1的区域后,在存储s12之前,要判断s12中的value(或message)及time是否与s11中的value(或message)及time均不同,若两者的value(或message)及time均不同,则按照time更新的顺序将s12存储在s11的下一处;若两者中的任一者变化或两者均未变化,则将s12舍弃,不对其进行存储。这样可以保证每个s都不同,使共享缓存区内的数据紧密排列,不会造成空间浪费。此外,为了缓解工业大数据的秒级变化的压力,及时释放存储空间。共享缓存区内的s只在设定的存储时效期内进行存储,超过所述存储时效期的数据会被更新。例如,在设定的存储时效期为一周的情况下,当监测到s23中的time在超过一周的情况下,s23将会被新的数据替代更新,接着监测下一处的s24中的time,一旦其超过一周,立即被新的数据代替更新。

所述数据库3可包括redis数据库30,该redis数据库30是一种基于内存亦可持久化的日志型、key-value数据库,支持包括字符型、链表型、集合型和有序集合等多种value类型的存储,因此,适用于存储数据量大、实时性要求高且更新频繁的数据。为减少存储空间,所述redis数据库30中的value采用google公司的protocolbuffer格式存储二进制数据。protocolbuffer是一种轻量、高效的结构化数据存储格式,与较传统的字符格式相比,其体积小、占用空间少且数据交换效率高。所述redis数据库30中所存储的二进制数据的加密性好,使得其更适用于存储有更高安全保密性需求的数据。

所述数据采集端1与所述数据接收端2还采用断点续传技术传输数据,其中,所述断点续传技术包括:当数据采集端1与数据接收端2的通讯故障时,标记未传输的数据;以及当该通讯恢复正常时,在不影响正常数据上传的情况下,再将所述未传输的数据上传到所述数据接收端2,和/或当所述数据接收端2与所述数据库3的通讯故障时,标记未传输的数据;以及当该通讯恢复正常时,在不影响正常数据上传的情况下,再将所述未传输的数据写入所述数据库3。具体而言,在所述数据采集端1和所述数据接收端2通讯的过程中,若所述数据接收端2成功收到一个报文,则需向所述数据采集端1反馈一个字节的数据;若未收到报文(例如通讯故障),则不会反馈一个字节的数据。当所述数据采集端1与所述数据接收端2的通讯故障时,所述数据接收端2未收到某一报文,则其不会反馈一个字节的数据;所述数据采集端1在未收到所述数据接收端2所反馈的数据的情况下,标记该报文(即未传输的数据),此时,所述未传输的数据保存在所述第二共享缓存区200内;当通讯恢复正常时,在不影响正常数据上传的情况下,所述数据采集端1再将所述第二共享缓存区200内的所述未传输的数据上传到所述数据接收端2。所述数据接收端2断点续传技术将所述数据写入所述数据库3的过程也是如此,于此不再赘述。所述断点续传技术解决了网络发生问题时数据丢失的问题,保证了数据在传输过程中(尤其是网络链路长的传输中)的安全性和完整性。

具体而言,现以所述第一共享缓存区100及所述第二共享缓存区200为例来解释本发明提供的基于共享缓存的数据采集过程。

对于所述数据采集端1,如图2所示,所述数据采集端1可启动多个采集程序(包括采集程序1000、采集程序1001、采集程序1002、……等等)采集来自多个数据源(包括数据源10、数据源11、数据源12、……)的数据,所述数据源可包括工业控制系统及智能传感器。将所述数据按照数据测点分组或特殊分组规则划,分给不同的采集程序处理(一般是均匀分配)。每个采集程序负责独立解析接口协议,采集数据,然后对所采集的数据进行数据过滤,即只有时间戳和数据值同时变化的数据才能经协议转换统一转换为私有数据格式,再把私有数据格式的数据存入所述第一共享缓存区100。其中非结构化数据,比如电子邮件、音视频、图片、网页、社交媒体等信息,可存放到message属性中;而结构化数据,比如数据库、管理软件接口、文件、日志等信息,可存放到除message属性外的各个属性中。经数据过滤后,可以保证每个数据都不同,使所述第一共享缓存区100的数据紧密排列,不会造成空间浪费。如果是双网采集,需增加双路数据对比,从相同的数据中选取一份存入所述第一共享缓存区100。所述第一共享缓存区100只在设定的存储时效期内进行存储,超过所述存储时效期的数据会被更新。最后,将所述第一共享缓存区100内的数据进行集中封包上传到所述数据接收端2。本实施例采用多进程形式采集数据,从而缓解数据采集接口的压力,实现秒级频率的实时数据采集;并通过所述第一共享缓存区100将数据采集和数据上传过程隔离,可以方便灵活地进行数据采集系统的物理部署,也可保证数据能够实时、安全且完整地传输。

当所述数据采集端1与所述数据接收端2的通讯故障时,所述数据采集端1在未收到所述数据接收端2成功接到某一报文(即未传输的数据)的反馈数据的情况下,对所述第一共享缓存区100内的该报文进行标记;当通讯恢复正常时,在不影响正常数据上传的情况下,所述数据采集端1再将所述报文上传到所述数据接收端2。本发明在所述数据采集端1处采用的断点续传技术解决了网络故障时的数据丢失问题,从所述数据采集端1到所述数据接收端2进行数据的单向传输,不影响原有工业控制系统或智能传感器的正常运行,保证了数据在传输过程中(尤其是网络链路长的传输中)的安全性和完整性。

对于所述数据接收端2,如图4所示,所述数据接收端2内的数据接收程序4通过网络链路接收多个所述数据采集端1上传的数据包,将数据包直接写入所述第二共享缓存区200。所述第二共享缓存区200的存储方式及相关优势与所述第一共享缓存区100的情况相似,于此不再赘述。最后,把所述第二共享缓存区内的所述数据写入所述redis数据库30。所述redis数据库30内存储的数据具有体积小、占用空间少、数据交换效率高且安全保密性好的优点。

当所述数据接收端2与所述redis数据库30的通讯故障时,所述数据接收端2在未收到所述redis数据库30成功接到某一报文(即未传输的数据)的反馈数据的情况下,对所述第二共享缓存区200内的该报文进行标记;当通讯恢复正常时,在不影响正常数据上传的情况下,所述数据接收端2再将所述报文上传到所述redis数据库30。本发明在所述数据接收端2处采用的断点续传技术解决了网络故障时的数据丢失问题,从所述数据接收端2到所述redis数据库30进行数据的单向传输,不影响原有工业控制系统或智能传感器的正常运行,保证了数据在传输过程中(尤其是网络链路长的传输中)的安全性和完整性。

本发明提供的所述第一共享缓存区100及所述第二共享缓存区200将数据采集过程中的数据采集和封包上传、数据接收和写入数据库分离,可以方便灵活地进行数据采集系统的物理部署。所述数据采集端1的数据采集和封包上传相互独立,当数据量巨大时采集进程、第一共享缓存区、封包上传可以部署成三个独立的物理机;所述数据接收端2的数据接收和写入数据库相互独立,当数据量巨大时接收程序可以部署为多个独立的物理机或虚拟机,第二共享缓存区和写入数据库也可以单独部署物理机。

本发明中的所述数据采集端1及所述数据接收端2,可以根据实际网络情况及安全状况进行多级级联,尤其是在传输链路很长的广域网络,可增加所述数据接收端2中的数据接收机的层级,以减轻对所述数据源的影响。

综上所述,本发明通过采用多进程并发形式和多级数据共享缓存传技术,对各种类型的数据进行统一的采集与传输,不仅可实现秒级频率的实时数据采集,还可保证数据在传输过程中的安全性和完整性,尽可能减轻采集服务器和网络传输的压力。

相应地,本发明还提供一种基于共享缓存的数据采集方法,该数据采集方法包括:通过多进程并发形式采集数据,将所述数据存入至第一共享缓存区并封包上传;以及接收封包上传的所述数据,将所述数据存入至第二共享缓存区,并把所述第二共享缓存区内的所述数据写入数据库。

可选的,所述将所述数据存入至第一共享缓存区包括:对采集的所述数据进行数据过滤,只有时间戳和数据值同时变化的数据才能存入所述第一共享缓存区。

可选的,所述第一共享缓存区及所述第二共享缓存区只在设定的存储时效期内对所述数据进行存储。

可选的,所述第一共享缓存区及所述第二共享缓存区内的数据结构体采用哈希表的key-value方式存储所述数据。

可选的,所述数据结构体包括name属性、flages属性、state属性、value属性、type属性、message属性和/或time属性。

可选的,所述数据结构体中的非结构化数据存放到message属性中,结构化数据存放到除message属性外的各个属性中。

有关本发明提供的基于共享缓存的数据采集方法的具体细节及益处可参阅上述针对基于共享缓存的数据采集系统的描述,于此不再赘述。

以上结合附图详细描述了本发明的优选实施方式,但是,本发明并不限于上述实施方式中的具体细节,在本发明的技术构思范围内,可以对本发明的技术方案进行多种简单变型,这些简单变型均属于本发明的保护范围。

另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本发明对各种可能的组合方式不再另行说明。

此外,本发明的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明的思想,其同样应当视为本发明所公开的内容。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1