本发明涉及数据处理技术领域,尤其涉及一种基于strom和内存网格实现数据转换的方法及系统。
背景技术:
随着单位时间内需要处理的数据越来越多,实时处理成为许多机构面临对的首要挑战,而storm作为一种低延时,高容错的流计算框架,广泛应用于越来越多的项目和软件系统中,strom从消息队列中读取数据,通过发射节点逐条发送到处理节点进行数据转换操作,数据转换操作主要是根据预先设定的业务进行相应操作,一般为变换或抛弃等操作,经过数据转换操作后的数据再发送至输出节点。当storm配合其他传统匹配数据源(如redis)进行数据转换操作时,由于storm处理速度快,进行数据匹配时,数据转换操作中传统数据源难以满足storm低延时的高速处理能力,会造成storm处理节点延时过高继而引发数据积压的问题,并且storm配合其他传统匹配数据源(如redis)进行数据转换时,匹配数据的变更十分繁琐,大大降低数据处理效率。
技术实现要素:
本发明要解决的技术问题之一,在于提供一种基于strom和内存网格实现数据转换的方法,降低数据积压,提高数据处理效率。
本发明要解决的技术问题之一是这样实现的:一种基于strom和内存网格实现数据转换的方法,需提供storm的复数个发射节点、复数个处理节点、复数个内存网格节点以及一个预热与更新节点,且每一处理节点对应一个发射节点和一个内存网格节点,所述方法包括如下步骤:
步骤10、采集数据,并将采集到的数据逐条按顺序以数据流的形式录入到消息队列中;
步骤20、将每一的处理节点与一内存网格节点进行绑定,绑定后的处理节点与内存网格节点共享内存空间,并实现同步启动与同步关闭;
步骤30、在进行转换操作前,所述预热与更新节点收到加载数据请求后,调用所有处理节点从关联数据源获取待匹配的第一数据,将所述第一数据存入各自绑定的内存网格节点中;
步骤40、通过所述发射节点从消息队列中读取待匹配的第二数据,并以数据流的形式逐条发射到处理节点;
步骤50、通过所述处理节点将接收到的第二数据与自身绑定的内存网格节点中获取到的第一数据进行匹配,并将匹配完成的数据发送给对应的输出节点进行下一步处理。
进一步的,所述方法还包括步骤60、当所述关联数据源发生变化需要更新时,暂停storm拓扑,发射节点停止发射数据,等待数据更新后,再执行步骤30,将更新后的第一数据存入内存网格节点后,重新启动业务拓扑,完成在线更新操作。
进一步的,所述步骤30中的“将所述第一数据存入各自绑定的内存网格节点中”具体为,每一所述处理节点将获取到的第一数据存入自身绑定的内存网格节点中,并以HashMap<key,value>的形式进行存储。
进一步的,所述步骤50具体为:通过所述处理节点在收到发射节点发射来的第二数据后,逐条进行处理,从与所述处理节点绑定的内存网格节点中获取存储的HashMap<key,value>格式的数据进行匹配,并将匹配的数据逐条发送给对应的输出节点进行下一步处理。
进一步的,所述关联数据源包括结构化文件、关系型数据库、非关系型数据库或消息队列。
本发明要解决的技术问题之二,在于提供一种基于strom和内存网格实现数据转换的系统,降低数据积压,提高数据处理效率。
本发明要解决的技术问题之二是这样实现的:一种基于strom和内存网格实现数据转换的系统,需提供storm的复数个发射节点、复数个处理节点、复数个内存网格节点以及一个预热与更新节点,且每一处理节点对应一个发射节点和一个内存网格节点,所述系统包括数据采集模块、节点绑定模块、数据获取模块、数据发射模块以及数据转换模块:
所述数据采集模块,用于采集数据,并将采集到的数据逐条按顺序以数据流的形式录入到消息队列中;
所述节点绑定模块,用于将每一的处理节点与一内存网格节点进行绑定,绑定后的处理节点与内存网格节点共享内存空间,并实现同步启动与同步关闭;
所述数据获取模块,用于在进行转换操作前,所述预热与更新节点收到加载数据请求后,调用所有处理节点从关联数据源获取待匹配的第一数据,将所述第一数据存入各自绑定的内存网格节点中;
所述数据发射模块,用于通过所述发射节点从消息队列中读取待匹配的第二数据,并以数据流的形式逐条发射到处理节点;
所述数据转换模块,用于通过所述处理节点将从数据发射模块接收到的第二数据与自身绑定的内存网格节点中获取到的第一数据进行匹配,并将匹配完成的数据发送给对应的输出节点进行下一步处理。
进一步的,所述系统还包括一在线更新模块,用于在所述关联数据源发生变化需要更新时,暂停storm拓扑,发射节点停止发射数据,等待数据更新后,再执行数据获取模块,将更新后的第一数据存入内存网格节点后,重新启动业务拓扑,完成在线更新操作。
进一步的,所述数据获取模块中的“将所述第一数据存入各自绑定的内存网格节点中”具体为,每一所述处理节点将获取到的第一数据存入自身绑定的内存网格节点中,并以HashMap<key,value>的形式进行存储。
进一步的,所述数据转换模块具体为:用于通过所述处理节点在收到发射节点发射来的第二数据后,逐条进行处理,从与所述处理节点绑定的内存网格节点中获取存储的HashMap<key,value>格式的数据进行匹配,并将匹配的数据逐条发送给对应的输出节点进行下一步处理。
进一步的,所述关联数据源包括结构化文件、关系型数据库、非关系型数据库或消息队列。
本发明具有如下优点:
1、storm与内存网格进行绑定,可提前将关联数据存入内存网格中,减少因从外部获取关联数据浪费的时间,减少数据匹配操作的延时,不会造成数据积压,提高数据处理效率;
2、利用内存网格节点读写速度快的特点,充分发挥storm低延时的高速处理能力,提高数据转换效率;
3、本发明利用storm的高容错性,保证storm集群与内存网格集群的高可用性;
4、本发明将需要匹配的数据存储于内存网格中,可以在不影响业务的情况下,通过预热及更新节点进行在线更新。
附图说明
下面参照附图结合实施例对本发明作进一步的说明。
图1为本发明一种基于strom和内存网格实现数据转换的方法流程图。
图2为本发明一种基于strom和内存网格实现数据转换的系统逻辑框图。
图3为本发明一种基于strom和内存网格实现数据转换的原理示意图。
具体实施方式
如图1和图3所示,一种基于strom和内存网格实现数据转换的方法,需提供storm的复数个发射节点、复数个处理节点、复数个内存网格节点以及一个预热与更新节点,且每一处理节点对应一个发射节点和一个内存网格节点,所述方法包括如下步骤:
步骤10、采集数据,并将采集到的数据逐条按顺序以数据流的形式录入到消息队列中;
步骤20、将每一的处理节点与一内存网格节点进行绑定,绑定后的处理节点与内存网格节点共享内存空间,并实现同步启动与同步关闭;
步骤30、在进行转换操作前,所述预热与更新节点收到加载数据请求后,调用所有处理节点从关联数据源获取待匹配的第一数据,将所述第一数据存入各自绑定的内存网格节点中,所述关联数据源包括结构化文件、关系型数据库、非关系型数据库或消息队列,所述“将所述第一数据存入各自绑定的内存网格节点中”具体为,每一所述处理节点将获取到的第一数据存入自身绑定的内存网格节点中,并以HashMap<key,value>的形式进行存储;
步骤40、通过所述发射节点从消息队列中读取待匹配的第二数据,并以数据流的形式逐条发射到处理节点;
步骤50、通过所述处理节点将接收到的第二数据与自身绑定的内存网格节点中获取到的第一数据进行匹配,并将匹配完成的数据发送给对应的输出节点进行下一步处理,所述步骤50具体为:通过所述处理节点在收到发射节点发射来的第二数据后,逐条进行处理,从与所述处理节点绑定的内存网格节点中获取存储的HashMap<key,value>格式的数据进行匹配,并将匹配的数据逐条发送给对应的输出节点进行下一步处理。
所述方法还包括步骤60、当所述关联数据源发生变化需要更新时,暂停storm拓扑,发射节点停止发射数据,等待数据更新后,再执行步骤30,将更新后的第一数据存入内存网格节点后,重新启动业务拓扑,完成在线更新操作。
如图2和图3所示,一种基于strom和内存网格实现数据转换的系统,需提供storm的复数个发射节点、复数个处理节点、复数个内存网格节点以及一个预热与更新节点,且每一处理节点对应一个发射节点和一个内存网格节点,所述系统包括数据采集模块、节点绑定模块、数据获取模块、数据发射模块以及数据转换模块:
所述数据采集模块,用于采集数据,并将采集到的数据逐条按顺序以数据流的形式录入到消息队列中;
所述节点绑定模块,用于将每一的处理节点与一内存网格节点进行绑定,绑定后的处理节点与内存网格节点共享内存空间,并实现同步启动与同步关闭;
所述数据获取模块,用于在进行转换操作前,所述预热与更新节点收到加载数据请求后,调用所有处理节点从关联数据源获取待匹配的第一数据,将所述第一数据存入各自绑定的内存网格节点中,所述“将所述第一数据存入各自绑定的内存网格节点中”具体为,每一所述处理节点将获取到的第一数据存入自身绑定的内存网格节点中,并以HashMap<key,value>的形式进行存储;
所述数据发射模块,用于通过所述发射节点从消息队列中读取待匹配的第二数据,并以数据流的形式逐条发射到处理节点;
所述数据转换模块,用于通过所述处理节点将从数据发射模块接收到的第二数据与自身绑定的内存网格节点中获取到的第一数据进行匹配,并将匹配完成的数据发送给对应的输出节点进行下一步处理;所述数据转换模块具体为:用于通过所述处理节点在收到发射节点发射来的第二数据后,逐条进行处理,从与所述处理节点绑定的内存网格节点中获取存储的HashMap<key,value>格式的数据进行匹配,并将匹配的数据逐条发送给对应的输出节点进行下一步处理。
所述系统还包括一在线更新模块,用于在所述关联数据源发生变化需要更新时,暂停storm拓扑,发射节点停止发射数据,等待数据更新后,再执行数据获取模块,将更新后的第一数据存入内存网格节点后,重新启动业务拓扑,完成在线更新操作。
下面结合一具体实施例对本发明做进一步说明:
请再参阅图3,storm集群中包括复数个发射节点,复数个处理节点,复数个内存网格节点、复数个输出节点以及一个预热及更新节点,且每一处理节点对应一个发射节点、一个内存网格节点以及一个输出节点;
数据转换操作前,待转换的第二数据逐条按顺序以数据流的形式存入消息队列中,堆积在消息队列中,等待发射节点发射队列中的数据;每一处理节点与一内存网格节点进行绑定,从而实现共享同块内存空间,同时启动、关闭与重启;预热与更新节点收到加载匹配数据请求后,调用所有的处理节点获取关联数据源(如结构化文件、关系型数据库、非关系型数据库或消息队列等)中待匹配的第一数据存入到与自己绑定的内存网格节点中,并以HashMap<key,value>形式存储;
进行转换操作时,发射节点从消息队列中读取需要匹配的第二数据,逐条以数据流的形式发射到处理节点,在第二数据流入处理节点后,处理节点从与自身绑定的内存网格中根据存储的HashMap<key,value>格式数据进行匹配,取得value结果根据预先定义的不同需求的业务完成变换或抛弃等操作,匹配完成的数据逐条流入对应的输出节点进行下一步处理。
当出现匹配数据变化需要更新时,暂停storm拓扑,发射节点停止发射数据,等待数据更新后,发射节点再从消息队列中读取需要匹配的数据给处理节点,预热及更新节点再获取更新后的第一数据存入内存网格节点,重新启动业务拓扑,完成在线更新操作。
本发明通过将storm与内存网格节点进行绑定,提前将关联数据存入内存网格节点中,等待处理节点直接调用,减少因从外部获取关联数据浪费的时间,减少数据匹配操作的延时,不会造成数据积压,提高数据处理效率;同时利用storm的高容错性,保证storm集群与内存网格集群的高可用性;另外,可以将需要匹配的数据存储于内存网格中,使得在不影响业务的情况下,通过预热及更新节点进行在线更新。
虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。