在拓扑任务中,您可以添加分片网关并设定相应的分片维度。如此,拓扑任务在执行过程中,即可根据执行上下文获取的分片配置,动态生成需要执行的分片。本文将快速引导您如何在拓扑任务中使用分片网关。
操作步骤
创建拓扑子任务。
创建两个或两个以上的简单或集群任务,并为其添加自定义参数(即条件参数),以作为后续拓扑任务中的子流程。此处以简单任务为例,配置步骤请参见 创建调度任务。其中:
调度类型:必须选择 事件触发。
通信方式:必须选择 回调 CALLBACK。
自定义参数:必须配置,作为拓扑任务的分片规则。示例如下:如未在控制台任务配置中自定义该参数,也可在本地代码中设置,示例如下:
@Override public ClientCommonResult handle(JobExecuteContext context) throws Exception{ context.putCustomParams("shardings",Lists.newArrayList("aaa","bbbb")); // 分片规则还支持配置整型,如 context.putCustomParams("shardings", 4); return ClientCommonResult.buildSuccessResult(); }
说明以上示例为简单任务代码处理器中的自定义参数配置,配置的参数名为
shardings
。您也可以根据业务需求自主配置。
使用分片网关。
您可以在创建或编辑拓扑任务时,为任务添加分片网关。这里以新建拓扑任务为例,配置步骤请参见 新建拓扑任务。其中,编辑拓扑图步骤的操作如下:
添加分片网关。
在拓扑图中单击 图标,添加一对 分片网关,然后单击 确定。
添加一个子任务。
单击分片网关之间的 图标,然后在 添加节点 面板中选择步骤 1 创建的一个任务,单击 确定,将其添加为子任务。
设置分片网关规则。
单击分片开始网关,然后设置以下参数:
设置分片规则:输入简单或集群任务创建的自定义参数名,例如上述示例中的
shardings
,然后单击保存分片规则。设置缓冲规则(可选):设置每次并发分片的任务数量,然后单击保存缓冲规则。
配置缓冲规则可避免分片一次性下发给客户端处理,有效减少客户端缓存和处理压力。同时,缓冲队列支持动态伸缩,您可以在任务执行时新增客户端以分担未处理的分片任务。
说明任务执行过程中,若分片网关的开始节点处于“执行中”状态时,您也可以动态修改分片执行的并发数。如开始节点仍处于未执行状态,则无法设置。
单击 提交。
在 版本管理 页签,发布该任务版本。
单击右上角的 立即触发,触发该任务。
您可在 调度记录 中查看该任务的执行实例。
查看分片节点状态
您可以在拓扑调度记录中查看各个分片的执行状态。
在拓扑任务列表,单击目标任务名称。
单击 调度记录 页签。
单击分片数右侧按钮查看分片状态。
例如,在下图的拓扑任务图中,分片节点有 5 个分片。其中,第 1、5 分片执行成功,第 2、4 分片执行失败,而第 3 分片执行了跳过操作,处于跳过状态。对于失败状态的分片节点,您可以进行实时的人工干预,选择重试或跳过全部失败任务。