流数据转存处理方法、装置及服务器制造方法及图纸

技术编号:29964470 阅读:18 留言:0更新日期:2021-09-08 09:29
本发明专利技术实施例提供一种流数据转存处理方法、装置及服务器,该方法包括:接收分布式消息系统实时发送的流数据;将流数据写入流数据所属的主题对应的分组集合中,分组集合部署在内存数据库中;分组集合中包括多个分组,每个分组具有一个分组号、且每个分组的最大可存储量相同;流数据存各个分组中时,一个分组号的分组存满后存入下一个分组号的分组;按照预设时间间隔,扫描流数据所属主题对应的分组集合中的待转存的分组;若待转存的分组已达到最大可存储量,则从内存数据库中读取待转存的分组中的流数据,并转存至关系型数据库中。既能减少对关系型数据库的访问,且不会因为暂时的故障,导致流数据转存失败,保证了系统的稳定运行。行。行。

【技术实现步骤摘要】
流数据转存处理方法、装置及服务器


[0001]本专利技术实施例涉及大数据
,尤其涉及一种流数据转存处理方法、装置及服务器。

技术介绍

[0002]随着大数据的兴起,流计算成为了一种常用的计算模式。流计算通常包括实时数据计算,和批处理方式相比,具有低时延、擅长窗口计算等优点;但是同时也有对计算机程序性能要求高、不容易实现多个流数据的关联、重复执行代价较大等缺点。因此,为了同时利用批处理和流计算的优点,既要处理大容量的离线数据,同时也要快速处理实时数据,提出了Lambda和Kappa等流批合一框架。在流批合一框架中,需要将流计算的结果(即流数据)存储到数据库中。
[0003]当前,现有的流计算引擎中能够提供微批计算模型的Storm Trident和Flink。但是这两种方式都是通过将流数据切分成一个个微小的批次,然后被流计算引擎进行处理,微批处理后将流数据微批转存至关系型数据库中。但是这种微批模型对数据流进行微批转存的模式,在一定程度上降低了对目标关系型数据库的访问,但是仍需要流计算引擎直接与关系型数据建立连接。当网络故障或者流数据出现峰值时导致关系型数据转存写入故障,会使得流数据转存失败。

技术实现思路

[0004]本专利技术实施例提供一种流数据转存处理方法、装置及服务器,以克服现有技术中当网络故障或者流数据出现峰值时导致关系型数据转存写入故障,会使得流数据转存失败的问题。
[0005]第一方面,本专利技术实施例提供一种流数据转存处理方法,包括:
[0006]通过流计算引擎接收分布式消息系统实时发送的流数据;将所述流数据写入所述流数据所属的主题对应的分组集合中,其中所述分组集合部署在内存数据库中;所述分组集合中包括多个分组,每个分组具有一个分组号、且每个分组的最大可存储量相同;其中所述流数据存各个分组中时,一个分组号的分组存满后存入下一个分组号的分组;
[0007]通过转存程序按照预设时间间隔,扫描所述流数据所属主题对应的分组集合中的待转存的分组;若所述待转存的分组已达到所述最大可存储量,则从所述内存数据库中读取所述待转存的分组中的流数据,并转存至关系型数据库中。
[0008]在一种可能的设计中,所述将所述流数据存储在所述流数据所属的主题对应的分组集合中,包括:
[0009]从所述内存数据库获取一个序列号,所述序列号中包含所述流数据所属的主题信息;
[0010]根据所述序列号和所述流数据所属的主题信息对应的主题分组的最大可存储量,确定所述分组号;
[0011]根据所述分组号,将流数据存储至所述分组号对应的分组中,直至所述分组存满后,重新执行从所述内存数据库获取一个新的序列号的步骤,其中所述新的序列号是在所述序列号基础上自动递增更新的序列号。
[0012]在一种可能的设计中,所述通过转存程序按照预设时间间隔,获取所述流数据所属主题对应的分组集合中的待转存的分组;若所述待转存的分组已达到所述最大可存储量,则从所述内存数据库中读取所述待转存的分组中的流数据,并转存至关系型数据库中,包括:
[0013]按照预设时间间隔,访问所述流数据所属主题对应的分组集合中的分组号被标记为待转存的分组;
[0014]若所述待转存的分组的存储记录数以达到最大可存储量,则读取所述待转存的分组中的流数据,并转存至关系型数据库;
[0015]将所述待转存的分组的分组号递增为下一个分组的分组号,并将下一个分组的分组号标记为待转存分组的分组,并重复执行确定所述流数据所属主题对应的分组集合中的分组号被标记为待转存分组的分组,为所述待转存的分组的步骤。
[0016]在一种可能的设计中,所述转存程序部署在集群中,所述方法还包括:
[0017]从所述内存数据库中获取所述待转存的分组所属主题的分布式锁;
[0018]若所述分布式锁获取成功,则从所述内存数据库获取当前日期的待转存的分组;
[0019]判断所述待转存的分组的分组号是否为空;
[0020]若为空,则获取所述当前日期的第一个分组的记录数;
[0021]若所述分组的记录数大于0,则获取当前日期的前一日期的待转存的分组;
[0022]若所述当前日期的前一日期的待转存的分组的记录数不为0,则将当前日期的前一日期的待转存的分组的流数据转存至关系型数据库;
[0023]删除内存数据库中当前日期的前一日期的所有待转存的分组的流数据;
[0024]将从内存数据库中获取的当前日期的待转存的分组的分组号设置为0;
[0025]删除所述获取的所述待转存的分组所属主题的分布式锁。
[0026]在一种可能的设计中,所述判断所述待转存的分组的分组号是否为空之后,所述方法还包括:
[0027]若不为空,则记录待转存的分组的分组号为初始分组号;
[0028]从所述内存数据库中获取所述初始分组号对应的分组的记录数;
[0029]判断记录数是否达到最大可存储量;
[0030]若达到,则将对应的待转存的分组转存至关系型数据库;并从所述内存数据库中删除所述待转存的分组的流数据,并将所述初始分组号递增1,并重复执行从所述内存数据库中获取所述初始分组号对应的分组的记录数的步骤,直至确定待转存的分组的的记录数小于最大可存储量。
[0031]在一种可能的设计中,所述确定待转存的分组的记录数小于最大可存储量之后,还包括:
[0032]判断待转存的分组的分组号是否大于初始分组号;
[0033]若否,则从所述内存数据库中获取当前流数据的序列号,并根据所述序列号和所述流数据所属的主题信息对应的主题分组的最大可存储量,确定当前真实分组号;
[0034]若所述待转存的分组的分组号小于所述当前真实分组号、且所述待转存的分组的记录数为0,则待转存的分组的分组号累积递增1,直至所述待转存的分组的分组号大于所述真实分组号;
[0035]判断待转存的分组的分组号是否大于初始分组号;
[0036]若是,则在所述内存数据库中进行待转存的分组的分组号的更新,以将更新后的待转存的分组的分组号的流数据,并转存至关系型数据库中。
[0037]第二方面,本专利技术实施例提供一种流数据转存处理装置,包括:
[0038]分组缓存模块,用于通过流计算引擎接收分布式消息系统实时发送的流数据;将所述流数据写入所述流数据所属的主题对应的分组集合中,其中所述分组集合部署在内存数据库中;所述分组集合中包括多个分组,每个分组具有一个分组号、且每个分组的最大可存储量相同;其中所述流数据存各个分组中时,一个分组号的分组存满后存入下一个分组号的分组;
[0039]分组转存模块,用于通过转存程序按照预设时间间隔,扫描所述流数据所属主题对应的分组集合中的待转存的分组;若所述待转存的分组已达到所述最大可存储量,则从所述内存数据库中读取所述待转存的分组中的流数据,并转存至关系型数据库中。
[0040]第三方面,本专利技术实施例提供一种服务器,包括:至少一个本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种流数据转存处理方法,其特征在于,包括:通过流计算引擎接收分布式消息系统实时发送的流数据;将所述流数据写入所述流数据所属的主题对应的分组集合中,其中所述分组集合部署在内存数据库中;所述分组集合中包括多个分组,每个分组具有一个分组号、且每个分组的最大可存储量相同;其中所述流数据存各个分组中时,一个分组号的分组存满后存入下一个分组号的分组;通过转存程序按照预设时间间隔,扫描所述流数据所属主题对应的分组集合中的待转存的分组;若所述待转存的分组已达到所述最大可存储量,则从所述内存数据库中读取所述待转存的分组中的流数据,并转存至关系型数据库中。2.根据权利要求1所述的方法,其特征在于,所述将所述流数据存储在所述流数据所属的主题对应的分组集合中,包括:从所述内存数据库获取一个序列号,所述序列号中包含所述流数据所属的主题信息;根据所述序列号和所述流数据所属的主题信息对应的主题分组的最大可存储量,确定所述分组号;根据所述分组号,将流数据存储至所述分组号对应的分组中,直至所述分组存满后,重新执行从所述内存数据库获取一个新的序列号的步骤,其中所述新的序列号是在所述序列号基础上自动递增更新的序列号。3.根据权利要求1所述的方法,其特征在于,所述通过转存程序按照预设时间间隔,获取所述流数据所属主题对应的分组集合中的待转存的分组;若所述待转存的分组已达到所述最大可存储量,则从所述内存数据库中读取所述待转存的分组中的流数据,并转存至关系型数据库中,包括:按照预设时间间隔,访问所述流数据所属主题对应的分组集合中的分组号被标记为待转存的分组;若所述待转存的分组的存储记录数以达到最大可存储量,则读取所述待转存的分组中的流数据,并转存至关系型数据库;将所述待转存的分组的分组号递增为下一个分组的分组号,并将下一个分组的分组号标记为待转存分组的分组,并重复执行确定所述流数据所属主题对应的分组集合中的分组号被标记为待转存分组的分组,为所述待转存的分组的步骤。4.根据权利要求1至3任一项所述的方法,其特征在于,所述转存程序部署在集群中,所述方法还包括:从所述内存数据库中获取所述待转存的分组所属主题的分布式锁;若所述分布式锁获取成功,则从所述内存数据库获取当前日期的待转存的分组;判断所述待转存的分组的分组号是否为空;若为空,则获取所述当前日期的第一个分组的记录数;若所述分组的记录数大于0,则获取当前日期的前一日期的待转存的分组;若所述当前日期的前一日期的待转存的分组的记录数不为0,则将当前日期的前一日期的待转存的分组的流数据转存至关系型数据库;删除内存数据库中当前日期的前一日期的所有待转存的分组的流数据;将从内存数据库中获取的当前日期的待转存的分组的分组号设置为0;删除所述获...

【专利技术属性】
技术研发人员:李乾孙志斌冉丁王勇
申请(专利权)人:中国农业银行股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1