System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 分布式高可用异步任务系统技术方案_技高网

分布式高可用异步任务系统技术方案

技术编号:40676731 阅读:4 留言:0更新日期:2024-03-18 19:15
本发明专利技术提供了一种分布式高可用异步任务系统,包括存储模块、多个服务节点和任务执行模块,所述存储模块中具有数据存储目录,所述数据存储目录分为多个分区,每一个分区目录都存储有数据索引文件、数据内容文件和数据读取状态文件;任务数据在存储模块中能够按顺序执行和延迟执行;任务数据执行失败后重新执行任务。多个节点可同时写入,写入速度可以通过增加节点数量显著增加,同时存储容量也增加。数据在多个节点同步备份,避免单点宕机故障。能够作为代码库和应用一起运行,无需维护多种服务资源。

【技术实现步骤摘要】

本专利技术涉及数据处理领域,特别是涉及一种分布式高可用异步任务系统


技术介绍

1、在商城系统中,订单处理,用户信息变更等较为耗时的数据操作会作为异步任务放置在后台执行,为实现这一目的,异步任务系统需要满足以下要求:

2、大部分任务的执行保持顺序性;

3、支持任务添加时设置延时;

4、支持任务执行失败时重试;

5、部分节点宕机不影响任务执行;

6、部分节点宕机不丢失任务;

7、任务的添加操作耗时短,且支撑高并发。

8、然而现有的传统方法都存在着各自的优缺点:

9、方案1:

10、方案描述:

11、采用关系型数据库(比如mysql等),存储任务数据;

12、由单一节点定时从任务表中查询取得闲置任务数据;

13、取得的任务添加进执行中任务表,然后加入工作线程池执行任务,执行完成后更新数据表中的任务状态。

14、方案优点:

15、实现简单;

16、由单一节点执行,可确保执行的顺序性;

17、由执行中任务表记录执行状态,可确保宕机任务不丢失,可以实现延时执行,以及失败重试。

18、方案缺点:

19、数据库插入数据较慢(通常数量级在1000次/秒),影响添加任务的并发性能;

20、单一节点执行,宕机时中断,可用性低;

21、在短时大量任务添加的场景下,数据库负载压力很大。

22、方案2:p>

23、方案描述:

24、采用键值数据库(比如redis等),存储任务数据;

25、由单一节点从链表(通常键值数据库都提供链表型存储结构)取得闲置任务数据;

26、取得的任务添加进执行中任务集合,然后加入工作线程池执行任务,执行完成后更新执行中任务的状态;

27、方案优点:

28、实现简单;

29、由单一节点执行,可确保执行的顺序性;

30、由执行中任务集合记录执行状态,可确保宕机任务不丢失,可以实现延时执行,以及失败重试;

31、键值数据库性能较高(通常数量级在10000次/秒),负载承压上限高;

32、方案缺点:

33、单一节点执行,宕机时中断,可用性低;

34、在短时大量任务添加的场景下,数据库负载压力很大;

35、方案3:

36、方案描述:

37、采用信息服务(比如kafka等),存储闲置任务数据;

38、采用键值数据库,存储执行中任务数据;

39、由单一节点从消息服务取得闲置任务数据;

40、取得的任务添加进执行中任务集合,然后加入工作线程池执行任务,执行完成后更新执行中任务的状态。

41、方案优点:

42、实现简单;

43、由单一节点执行,可确保执行的顺序性;

44、由执行中任务集合记录执行状态,可确保宕机任务不丢失,可以实现延时执行,以及失败重试;

45、消息服务性能较高(通常读写数量级在10000次/秒),键值数据库性能较高(通常读写数量级在10000次/秒),负载承压上限高。

46、方案缺点:

47、单一节点执行,宕机时中断,可用性低;

48、系统部署运维较复杂,需要部署消息服务和键值数据库2套系统服务的配合,且消息服务通常包含多个软件服务的部署运维。

49、因此,本领域亟需一种能够很好地满足异步任务系统的要求的技术方案。


技术实现思路

1、本专利技术的目的是提供一种能够满足异步任务系统要求的技术方案。

2、为实现上述目的,本专利技术提供了如下方案:

3、一种分布式高可用异步任务处理系统,包括:

4、存储模块、多个服务节点和任务执行模块,所述存储模块中具有数据存储目录,所述数据存储目录分为多个分区,每一个分区目录都存储有数据索引文件、数据内容文件和数据读取状态文件;任务数据在存储模块中能够按顺序执行和延迟执行;任务数据执行失败后重新执行任务;

5、所述服务节点管理多个数据分区,同一个数据分区会被分配给若干个服务节点,对于该分区所属的多个服务节点,自动决定其中1个为主节点,剩下的成为从节点;

6、所述任务执行模块用于任务数据读取、确保相同分组的任务执行顺序与添加顺序相同、任务状态持久化、任务延迟执行、任务失败重试机制以及索引记录的变更。

7、可选的,数据写操作进入服务节点后,根据分区节点信息表将请求转发给该分区所属的主节点处理写入,从节点从主节点同步变更操作,保持备份数据一致性;

8、当某分区的主节点宕机后,则从节点中自动有1个成为新的主节点,宕机的节点恢复后再次加入分区成为从节点。

9、可选的,对于多个分区而言,不同的分区的服务节点组里可能是不同的节点,不同分区的主节点尽可能被分配为不同的节点,数据写入操作由于有多个节点的分担,因而写入的并发性能可以通过增加节点数增加,因此总体并发性能上限可以达到很高。

10、可选的,任务数据写入请求可以发送到任一任务节点;对于请求的数据所在分区,如果当前节点不是主节点,则根据节点清单转发请求至主节点;分区所属的从节点定时发送心跳请求给主节点,节点响应值包含数据写操作,以及节点清单变更信息;主节点根据心跳请求,如果从节点信息发生变化,实时更新节点清单;如果心跳请求多次失败,从节点认为主节点已经宕机,根据清单,由编号最小的自动成为新的主节点;任务数据的执行由主节点的线程池执行。

11、可选的,任务数据读取时,由任务调度线程读取,数据读取状态文件获取到最新读取的索引记录编号,根据编号读取多条索引记录,过滤掉未写入完成的,以及执行完成的记录,根据索引记录,读取数据内容。

12、可选的,所述任务数据在存储模块中能够按顺序执行的方法是:读取的任务数据添加进任务线程池,任务线程池根据分组编号选择线程编号,所述数据索引文件只能顺序追加记录,任务组编号相同的任务只会被同一个线程执行,从而确保执行顺序和添加顺序一致。

13、可选的,任务线程执行过程中,任务状态相关信息有所变更时,更新索引文件中对应的索引记录中的已执行次数、执行完成状态和执行完成时间,即使服务重启,依然会再次拉取到尚未完成的任务数据进入线程池执行。

14、可选的,所述任务数据在存储模块中能够延迟执行的方法是:任务数据读取时,若任务数据的预定执行时间戳尚未到达,则先跳过,稍后再尝试读取装载。

15、可选的,所述任务数据执行失败后重新执行任务的方法是:任务数据读取时,若任务数据执行状态为失败,且已执行次数小于最大次数时,数据被再次读取装载。

16、可选的,索引记录的变更,也会作为数据变更操作添加进分区节点同步事件本文档来自技高网...

【技术保护点】

1.一种分布式高可用异步任务系统,其特征在于,包括存储模块、多个服务节点和任务执行模块,所述存储模块中具有数据存储目录,所述数据存储目录分为多个分区,每一个分区目录都存储有数据索引文件、数据内容文件和数据读取状态文件;任务数据在存储模块中能够按顺序执行和延迟执行;任务数据执行失败后重新执行任务;

2.根据权利要求1所述的分布式高可用异步任务系统,其特征在于,数据写操作进入服务节点后,根据分区节点信息表将请求转发给该分区所属的主节点处理写入,从节点从主节点同步变更操作,保持备份数据一致性;

3.根据权利要求2所述的分布式高可用异步任务系统,其特征在于,对于多个分区而言,不同的分区的服务节点组里可能是不同的节点,不同分区的主节点尽可能被分配为不同的节点,数据写入操作由于有多个节点的分担,因而写入的并发性能可以通过增加节点数增加,因此总体并发性能上限可以达到很高。

4.根据权利要求1所述的分布式高可用异步任务系统,其特征在于,任务数据写入请求可以发送到任一任务节点;对于请求的数据所在分区,如果当前节点不是主节点,则根据节点清单转发请求至主节点;分区所属的从节点定时发送心跳请求给主节点,节点响应值包含数据写操作,以及节点清单变更信息;主节点根据心跳请求,如果从节点信息发生变化,实时更新节点清单;如果心跳请求多次失败,从节点认为主节点已经宕机,根据清单,由编号最小的自动成为新的主节点;任务数据的执行由主节点的线程池执行。

5.根据权利要求1所述的分布式高可用异步任务系统,其特征在于,任务数据读取时,由任务调度线程读取,数据读取状态文件获取到最新读取的索引记录编号,根据编号读取多条索引记录,过滤掉未写入完成的,以及执行完成的记录,根据索引记录,读取数据内容。

6.根据权利要求1所述的分布式高可用异步任务系统,其特征在于,所述任务数据在存储模块中能够按顺序执行的方法是:读取的任务数据添加进任务线程池,任务线程池根据分组编号选择线程编号,所述数据索引文件只能顺序追加记录,任务组编号相同的任务只会被同一个线程执行,从而确保执行顺序和添加顺序一致。

7.根据权利要求1所述的分布式高可用异步任务系统,其特征在于,任务线程执行过程中,任务状态相关信息有所变更时,更新索引文件中对应的索引记录中的已执行次数、执行完成状态和执行完成时间,即使服务重启,依然会再次拉取到尚未完成的任务数据进入线程池执行。

8.根据权利要求1所述的分布式高可用异步任务系统,其特征在于,所述任务数据在存储模块中能够延迟执行的方法是:任务数据读取时,若任务数据的预定执行时间戳尚未到达,则先跳过,稍后再尝试读取装载。

9.根据权利要求1所述的分布式高可用异步任务系统,其特征在于,所述任务数据执行失败后重新执行任务的方法是:任务数据读取时,若任务数据执行状态为失败,且已执行次数小于最大次数时,数据被再次读取装载。

10.根据权利要求1所述的分布式高可用异步任务系统,其特征在于,索引记录的变更,也会作为数据变更操作添加进分区节点同步事件队列,即使主节点宕机,也不会影响任务的继续执行。

...

【技术特征摘要】

1.一种分布式高可用异步任务系统,其特征在于,包括存储模块、多个服务节点和任务执行模块,所述存储模块中具有数据存储目录,所述数据存储目录分为多个分区,每一个分区目录都存储有数据索引文件、数据内容文件和数据读取状态文件;任务数据在存储模块中能够按顺序执行和延迟执行;任务数据执行失败后重新执行任务;

2.根据权利要求1所述的分布式高可用异步任务系统,其特征在于,数据写操作进入服务节点后,根据分区节点信息表将请求转发给该分区所属的主节点处理写入,从节点从主节点同步变更操作,保持备份数据一致性;

3.根据权利要求2所述的分布式高可用异步任务系统,其特征在于,对于多个分区而言,不同的分区的服务节点组里可能是不同的节点,不同分区的主节点尽可能被分配为不同的节点,数据写入操作由于有多个节点的分担,因而写入的并发性能可以通过增加节点数增加,因此总体并发性能上限可以达到很高。

4.根据权利要求1所述的分布式高可用异步任务系统,其特征在于,任务数据写入请求可以发送到任一任务节点;对于请求的数据所在分区,如果当前节点不是主节点,则根据节点清单转发请求至主节点;分区所属的从节点定时发送心跳请求给主节点,节点响应值包含数据写操作,以及节点清单变更信息;主节点根据心跳请求,如果从节点信息发生变化,实时更新节点清单;如果心跳请求多次失败,从节点认为主节点已经宕机,根据清单,由编号最小的自动成为新的主节点;任务数据的执行由主节点的线程池执行。

5.根据权利要求1所述的分布式高可用异步任务系统,其特征在...

【专利技术属性】
技术研发人员:刘兴谷朱臻
申请(专利权)人:易百信息技术上海股份有限公司
类型:发明
国别省市:

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

1