System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于缓存与日志的本地队列数据持久化方法技术_技高网

一种基于缓存与日志的本地队列数据持久化方法技术

技术编号:40301541 阅读:4 留言:0更新日期:2024-02-07 20:48
本发明专利技术涉及一种基于缓存与日志的本地队列数据持久化方法。本方法包括:系统启动时,初始化三个本地队列并将它们注册进队列管理器中;将业务数据持续推送到主队列和副本队列,主队列消费线程拉取数据,执行数据处理业务并将处理完成的数据推送到待删除队列;副本数据写入本地日志文件,副本队列消费线程拉取数据,循环将副本数据备份到Redis集群,备份完成后删除日志文件中的对应数据;待删除队列接收主队列数据处理业务输出的数据,消费线程拉取数据并与备份在Redis集群中的数据比较,删除相同数据;系统重启时,查询Redis集群中的存量数据并将其加载进主队列重新消费;队列管理器接收队列的注册信息并监控本地队列的容量。

【技术实现步骤摘要】

本专利技术属于数据持久化方法,尤其涉及一种基于缓存与日志的本地队列数据持久化方法和数据持久化系统。


技术介绍

1、在分布式系统中,本地队列是常用的消息传递机制,用于实现异步任务和消息处理。本地队列在计算系统和应用程序中扮演着重要角色,随着数据处理需求的增长,传统的本地队列系统在处理大量数据时面临一些挑战,存在以下缺陷和不足:

2、首先,当系统故障或断电时,本地队列中尚未处理的数据可能会丢失,并导致数据不可恢复。

3、其次,传统本地队列在数据持久化方面依赖于磁盘写入,性能较低且容易受到磁盘故障的影响,而且,持久性存储和恢复数据的现有方法往往效率低下,增加了系统开销和延迟。

4、针对上述问题,目前已出现了一些解决方案,举例如下:

5、1.数据库持久化:将数据存储在关系型数据库或非关系型数据库中,通过事务和日志记录来确保数据的持久性和一致性,但是,此方案很难保障缓存与数据库的数据一致性,存在高并发性能瓶颈,且增加了系统的复杂性。

6、2.日志记录:在系统运行过程中,将关键操作和数据更改记录在日志文件中,通过将数据更改写入持久性日志,即使系统故障,仍可以使用日志文件中的信息来还原和恢复数据,但此方案需要额外的存储空间来保存日志,且恢复过程比较耗时。

7、3.快照技术:创建数据的快照或镜像,以便在系统故障后恢复数据到特定时间点的状态,但此方案同样存在存储空间占用过大,恢复耗时过长的问题。

8、综上可以看出,现有的解决方案都存在一些难以逾越的问题,使用并发效率、易用性和通用性较差。因此,很有必要设计一种简单、高效的数据持久化方法来解决这些问题。


技术实现思路

1、为了解决现有数据持久化方法存在的上述问题,本专利技术提出了一种新的基于缓存与日志的本地队列数据持久化方法。

2、术语解释

3、本专利技术方法叙述中所涉及的专有名词解释如下:

4、1.分布式系统:分布式系统是指由多个独立计算机或节点组成的系统,这些节点通过网络连接并协同工作来完成共同的任务。在分布式系统中,各个节点可以通过消息传递、远程调用或共享存储等方式进行通信和协调。这些节点共享资源和工作负载,通过并行处理和分布式计算来提高系统的性能、可用性和可扩展性。

5、2.队列:队列是一种常见的数据结构,用于按照先进先出(first-in-first-out,fifo)的原则管理元素的集合。它类似于现实生活中的排队场景,新加入的元素排在队列的末尾,而从队列中移除元素时总是从队列的头部开始。

6、3.快照技术:快照是指对数据或系统状态进行捕捉的一种方法。在计算领域,快照技术用于创建数据的镜像或数据集的特定时间点的备份,以便在需要时可以快速还原数据到先前的状态。

7、4.下文会将存储主数据的本地队列简称为主队列,主队列存储的数据简称主数据(主队列数据);存储副本数据的本地队列简称为副本队列,副本队列存储的数据简称副本数据(副本队列数据、主数据副本);存储待删除数据的本地队列简称为待删除队列。

8、具体地,本专利技术提供了一种基于缓存与日志的本地队列数据持久化方法,本方法包括:

9、s1.系统启动时,初始化日志文件路径,同时初始化三个本地队列并将它们注册进队列管理器中,所述三个本地队列分别为主队列、副本队列、待删除队列;

10、s2.系统启动后,将产生的业务数据持续推送到主队列和副本队列,主队列的消费线程持续从主队列拉取数据,然后循环执行主队列数据的处理业务,并将处理完成的数据推送到待删除队列;

11、s3.将接收到的副本数据写入本地日志文件,副本队列的消费线程持续从副本队列拉取数据,然后循环将副本数据备份到redis集群,备份完成后将日志文件中的对应数据删除;

12、s4.待删除队列接收来自主队列数据处理业务输出的数据后,消费线程持续拉取待删除队列的数据,并将拉取到的数据与备份在redis集群中的数据进行比较,删除备份在redis集群中的相同数据;

13、s5.系统重启时,主队列初始化完成后,查询缓存在redis集群中的存量数据并将其加载进主队列重新消费;

14、s6.队列管理器接收队列的注册信息,并实时监控已经注册的本地队列的容量,根据队列容量的水平控制扩容线程的开启与关闭。

15、进一步地,本专利技术基于缓存与日志的本地队列数据持久化方法步骤s1中所述的三个本地队列中:

16、主队列用来存储业务的主数据;

17、副本队列用来存储主数据的副本;

18、待删除队列用来存储主队列处理完的数据。

19、进一步地,本专利技术基于缓存与日志的本地队列数据持久化方法中所述的副本队列和待删除队列服务于主队列数据的备份与恢复;所述日志文件服务于副本队列数据的备份与恢复。

20、进一步地,本专利技术基于缓存与日志的本地队列数据持久化方法步骤s3中还包括:在系统重启时,扫描本地日志文件,将遗留在本地日志文件中的数据重新加载进副本队列。

21、进一步地,本专利技术基于缓存与日志的本地队列数据持久化方法步骤s5中所述的缓存在redis集群中的存量数据即为主队列中还未被消费的数据。

22、进一步地,本专利技术基于缓存与日志的本地队列数据持久化方法步骤s6中所述的队列的注册信息包括队列的名称、队列的容量、容量告警高水位阈值、容量告警低水位阈值、队列所在的类和扩容方法;

23、所述根据队列容量的水平控制扩容线程的开启与关闭,包括:

24、当队列容量达到容量告警高水位阈值时,开启扩容线程,通过队列所在的类和扩容方法反射调用扩容方法来消费队列数据,扩大队列的可用容量;

25、当队列容量低于容量告警低水位阈值时,扩容线程自动中断。

26、进一步地,本专利技术基于缓存与日志的本地队列数据持久化方法还包括:当数据处理发生异常时,将异常数据推送到故障容错模块,通过预先设置的异常重试机制和异常补偿方案完成异常数据的容错。

27、另外,本专利技术还提供了一种计算机可读存储介质,所述存储介质上存储有计算机程序,所述程序被处理器执行时实现上述的基于缓存与日志的本地队列数据持久化方法的步骤。

28、另一方面,本专利技术还提供了一种基于缓存与日志的本地队列数据持久化系统,本系统包括:

29、数据生成模块:用于实现主数据和副本数据的生成、推送,以及主队列数据的消费业务;

30、主数据处理模块:用于控制和实现主队列数据的消费流程,包括拉取主队列数据、循环处理主队列数据、推送处理完成的数据;

31、副本数据处理模块:用于实现副本数据处理业务和日志文件的写入、删除,以及将副本数据批量插入到redis集群中;

32、待删除主数据处理模块:用于接收主数据处理模块推送的已经处理完成的数据信息,并删除这些数据在redis集群中的备份;...

【技术保护点】

1.一种基于缓存与日志的本地队列数据持久化方法,其特征在于,所述方法包括:

2.根据权利要求1所述的基于缓存与日志的本地队列数据持久化方法,其特征在于,步骤S1中所述的三个本地队列中:

3.根据权利要求2所述的基于缓存与日志的本地队列数据持久化方法,其特征在于,所述副本队列和待删除队列服务于主队列数据的备份与恢复;所述日志文件服务于副本队列数据的备份与恢复。

4.根据权利要求1所述的基于缓存与日志的本地队列数据持久化方法,其特征在于,步骤S3中还包括:在系统重启时,扫描本地日志文件,将遗留在本地日志文件中的数据重新加载进副本队列。

5.根据权利要求1所述的基于缓存与日志的本地队列数据持久化方法,其特征在于,步骤S5中所述的缓存在Redis集群中的存量数据即为主队列中还未被消费的数据。

6.根据权利要求1所述的基于缓存与日志的本地队列数据持久化方法,其特征在于,步骤S6中所述的队列的注册信息包括队列的名称、队列的容量、容量告警高水位阈值、容量告警低水位阈值、队列所在的类和扩容方法;

7.根据权利要求1所述的基于缓存与日志的本地队列数据持久化方法,其特征在于,所述本地队列数据持久化方法还包括:当数据处理发生异常时,将异常数据推送到故障容错模块,通过预先设置的异常重试机制和异常补偿方案完成异常数据的容错。

8.一种计算机可读存储介质,所述存储介质上存储有计算机程序,所述程序被处理器执行时实现权利要求1-7任一项所述的基于缓存与日志的本地队列数据持久化方法的步骤。

9.一种基于缓存与日志的本地队列数据持久化系统,其特征在于,所述系统包括:

10.根据权利要求9所述的基于缓存与日志的本地队列数据持久化系统,其特征在于,所述副本数据处理模块包含副本数据处理业务子模块和日志文件子模块。

...

【技术特征摘要】

1.一种基于缓存与日志的本地队列数据持久化方法,其特征在于,所述方法包括:

2.根据权利要求1所述的基于缓存与日志的本地队列数据持久化方法,其特征在于,步骤s1中所述的三个本地队列中:

3.根据权利要求2所述的基于缓存与日志的本地队列数据持久化方法,其特征在于,所述副本队列和待删除队列服务于主队列数据的备份与恢复;所述日志文件服务于副本队列数据的备份与恢复。

4.根据权利要求1所述的基于缓存与日志的本地队列数据持久化方法,其特征在于,步骤s3中还包括:在系统重启时,扫描本地日志文件,将遗留在本地日志文件中的数据重新加载进副本队列。

5.根据权利要求1所述的基于缓存与日志的本地队列数据持久化方法,其特征在于,步骤s5中所述的缓存在redis集群中的存量数据即为主队列中还未被消费的数据。

6.根据权利要求1所述的基于缓存与日志的本地队列...

【专利技术属性】
技术研发人员:周旺
申请(专利权)人:中电云计算技术有限公司
类型:发明
国别省市:

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

1