(19)国家知识产权局
(12)发明 专利
(10)授权公告 号
(45)授权公告日
(21)申请 号 202210525528.5
(22)申请日 2022.05.16
(65)同一申请的已公布的文献号
申请公布号 CN 114625520 A
(43)申请公布日 2022.06.14
(73)专利权人 中博信息技 术研究院有限公司
地址 210012 江苏省南京市雨 花台区小行
尤家凹08号
(72)发明人 朱云杰 袁庆祝
(74)专利代理 机构 常州佰业腾飞专利代理事务
所(普通合伙) 32231
专利代理师 刘松
(51)Int.Cl.
G06F 9/48(2006.01)
G06F 9/50(2006.01)H04L 67/61(2022.01)
(56)对比文件
CN 110753131 A,2020.02.04
CN 10915 0957 A,2019.01.04
CN 113672367 A,2021.1 1.19
CN 113535362 A,2021.10.2 2
CN 104346215 A,2015.02.1 1
CN 112367268 A,2021.02.12
US 2021/ 0152659 A1,2021.0 5.20
审查员 沙爽
(54)发明名称
一种基于限流的分布式任务调度网关调度
方法
(57)摘要
本发明公开了一种基于限流的分布式任务
调度网关调度方法, 属于大数据技术领域, 包括
在服务端构建分布式任务调度网关, 任务调度网
关包括任务接口模块、 任务调度模块、 任务执行
模块和任务调度内部区, 在服务端构建的任务调
度全局区; 任务接口模块对任务进行调度预处
理, 更新到任务调度区, 通知任务调度模块调度
任务执行, 并等待任务执行结果; 任务调度模块
调度出预备执行任务和可执行任务, 启动任务执
行模块传递任务流水号; 任务执行模块发送任务
执行请求至任务执行微服务, 将任务执行结果存
入任务调度内部区。 相比现有微服务框架提供的
服务网关提供的限流方法, 可实现复杂逻辑且配
置灵活的基于限流任务调度, 极大提高资源的可
用性与稳定性。
权利要求书3页 说明书7页 附图7页
CN 114625520 B
2022.08.30
CN 114625520 B
1.一种基于限流的分布式任务调度网关调度方法, 其特 征在于: 包括以下步骤:
步骤S100: 在服务端采用微服务框架创建分布式任务调度网关集群, 任务调度网关内
构建任务接口模块、 任务调 度模块、 任务执行模块和任务调度内部区, 任务调度内部区包括
待调度任务区、 待执 行任务区和任务执 行结果区;
在服务端的分布式共享内存数据库Redis上构建的任务调度全局区, 任务调度网关共
享任务调度全局区, 任务调度内部区和任务调度全局区构成了任务调度区;
步骤S101: 任务接口模块接收客户端提交的任务后, 首先对任务进行调度预处理, 得到
预处理后任务, 并将其更新到任务调度内部区和任务调度全局区;
再然后任务接口模块 通知任务调度模块对 任务进行调度并执 行;
最后任务接口模块在任务调度内部区内等待任务执 行结果;
步骤S102: 任务调度模块在任务调度内部区内调度出预备执行任务, 再在任务调度全
局区内调度出可执行任务, 启动任务执行模块, 任务调度模块向任务执行模块传递任务流
水号;
在执行步骤S102时, 任务调度模块扫描待调度任务区内的每个资源, 获取在资源上等
待调度的任务列表, 根据任务等待调度时长和任务优先级获取预备执行任务; 预备执行任
务在任务调度全局区内进行优先级和限流调度, 若调度成功, 则启动任务执行模块并传递
任务流水号, 同时在任务调度全局区内将调度成功的任务的状态更新为 “执行中”, 在待调
度任务区中删除调度成功的任务;
在执行步骤S102时, 任务调度模块扫描资源上等待调度的任务列表, 取得任务优先级
最高的任务序列, 再从序列中取出等待调 度时间最长的任务并与任务执行超时阈值进 行比
较: 若等待调度时间大于任务执行超时阈值, 则直接将执行超时失败结果加入到任务执行
结果区内, 并从任务调度区中删除该任务; 反 之, 则将该任务作为预 备执行任务;
在执行步骤S102时, 由任务调度模块生成任务流水号和任务等待调度开始时间, 任务
流水号在任务调度网关集群上唯一; 根据任务中的租户参数查询任务调度配置库, 对租户
进行鉴权, 并设定任务的优先级; 根据任务中的任务类型和资源标识 参数, 查询任务调 度配
置库, 设定任务执 行微服务路由、 任务执 行超时阈值、 资源组和资源的限流阈值;
步骤S103: 任务执行模块根据任务中的任务执行服务路由参数, 发送任务执行请求至
任务执行微服务;
任务执行模块将任务执行微服务返回的任务执行结果存入任务调度内部区, 并通知任
务接口模块获取任务执 行结果;
在执行步骤S102和步骤S103时, 以预备执行任务中的资源组ID作为Redis Key在任务
调度全局区内取得该资源组上的所有网关上的全局任务列表, 扫描列表取得与预备执行任
务中的资源ID相同的任务优先级最大值并进行判断: 若该任务优先级最大值大于预备执行
任务优先级, 则任务调度失败; 反 之则进行限流调度;
根据预备执行任务中的资源组ID和资源ID, 在全局任务列表内统计任务状态为 “执行
中”的任务数, 得出资源组当前流量和资源当前流量并进行判断: 若资源组当前流量和资源
当前流量分别小于预备执行任务中的资源组限流阈值和资源限流阈值, 则预备执行任务调
度成功, 在全局任务列表中修改任务状态为 “执行中”; 反之, 则预备执行任务调度失败;
依据调度成功 的任务流水号, 从待调度任务区删除调度成功 的任务, 启动任务执行模权 利 要 求 书 1/3 页
2
CN 114625520 B
2块并传递任务 流水号;
任务执行模块启动后, 由任务流水号从待执行任务 区中获取需要执行的任务并从中删
除该任务, 再由需要 执行的任务的路由参数, 发送任务执行请求到任务执行微服务, 将返回
的任务执 行结果存入任务结果区, 并通知任务接口模块获取任务执 行结果;
在执行步骤S103时, 当任务接口模块收到任务执行结果通知后, 从任务执行结果区取
出任务执 行结果, 并将结果返回给客户端;
任务接口模块根据任务执行结果中的资源组ID、 任务流水号, 在Redis任务调度全局区
和任务执行结果区上删除已经返回任务执行结果的任务; 若任务接口模块在任务执行结果
区等待时长超过任务执行超时阈值, 则直接返回客户端执行失败, 同时删除任务调度区中
的任务。
2.如权利要求1所述的一种基于限流的分布式任务调度网关调度方法, 其特征在于: 在
执行步骤S100时, 所述任务调度网关是微服务的集群, 客户端递交的任务通过负载均衡分
发到所述任务调度网关中进行统一调度执 行;
任务调度网关采用时间排队、 任务优先级和资源限流进行任务调度, 资源限流的方式
包括资源组限流和资源限流; 资源限流方式的任务调度即为基于任务中的资源和资源组被
并发使用的最大任务数, 在单个任务中资源仅被有限次顺序使用。
3.如权利要求1所述的一种基于限流的分布式任务调度网关调度方法, 其特征在于: 在
执行步骤S100时, 所述任务调度内部区包括待调度任务区、 待执行任务区和任务执行结果
区, 任务调度内部区的数据结构采用链 表结构, 任务调度内部区上的操作线程同步;
待调度任务区为资源组对象链表, 其结点属性包括资源组ID和资源对象链表, 资源对
象链表结点的属性包括资源ID和待调 度任务对象链表, 待调 度任务对象链表的结点属性包
括任务流水号、 任务调度状态、 任务优 先级、 任务等待调度开始时间、 任务执行超时时长、 网
元组ID、 网元ID、 网元组限流阈值和网元限流阈值;
待执行任务区的链表结点为待执行任务对象, 待执行任务对象的属性包括任务流水
号、 任务执 行微服务路由和业 务数据;
任务执行结果区的链表结点为任务执行结果对象, 任务执行结果对象的属性包括任务
流水号和结果数据。
4.如权利要求3所述的一种基于限流的分布式任务调度网关调度方法, 其特征在于: 在
执行步骤S100时, 任务调度全局区采用Redis List数据结构存放数据, 键名为资源组ID, 键
值为所有使用资源组中资源的任务列 表, 结点数据包括任务流水号、 任务优先级、 任务调度
状态和资源ID, 任务调度状态包括待调度和执行中, 设置数据存放时长等于任务执行超时
时长, Redis根据所述设置数据存放时长自动清除数据;
在创建任务调度全局区时, 创建Redis全局锁池, 为每 个资源组设立分布式全局锁;
任务调度网关操作任务调度全局区前获取全局锁, 操作完毕释放全局锁。
5.如权利要求4所述的一种基于限流的分布式任务调度网关调度方法, 其特征在于: 对
所有资源进行分组, 分组后有效提高任务调度区上任务的搜索速度;
将若干资源需要进行总限流的分成一个资源组, 该资源组限流阈值小于资源组内各个
资源限流阈值的总和;
将无须资源组限流的资源也分为若干资源组, 每个资源组限流阈值等于组内各个资源权 利 要 求 书 2/3 页
3
CN 114625520 B
3
专利 一种基于限流的分布式任务调度网关调度方法
文档预览
中文文档
18 页
50 下载
1000 浏览
0 评论
309 收藏
3.0分
温馨提示:本文档共18页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
本文档由 人生无常 于 2024-03-18 07:12:08上传分享