System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及数据处理领域,特别是涉及一种分布式高可用异步任务系统。
技术介绍
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:
...【技术保护点】
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所述的分布式高可用异步任务系统,其特征在...
【专利技术属性】
技术研发人员:刘兴谷,朱臻,
申请(专利权)人:易百信息技术上海股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。