阿里云首页 金融分布式架构 SOFAStack

分片网关

在拓扑任务中,您可以添加分片网关并设定相应的分片维度。如此,拓扑任务在执行过程中,即可根据执行上下文获取的分片配置,动态生成需要执行的分片。本文将快速引导您如何在拓扑任务中使用分片网关。

操作步骤

  1. 创建拓扑子任务。

    创建两个或两个以上的简单或集群任务,并为其添加自定义参数(即条件参数),以作为后续拓扑任务中的子流程。此处以简单任务为例,配置步骤请参见 创建调度任务。其中:

    • 调度类型:必须选择 事件触发

    • 通信方式:必须选择 回调 CALLBACK

    • 自定义参数:必须配置,作为拓扑任务的分片规则。示例如下:mv 如未在控制台任务配置中自定义该参数,也可在本地代码中设置,示例如下:

      @Override
      public ClientCommonResult handle(JobExecuteContext context) throws Exception{
            context.putCustomParams("shardings",Lists.newArrayList("aaa","bbbb"));
            // 分片规则还支持配置整型,如 context.putCustomParams("shardings", 4);
            return ClientCommonResult.buildSuccessResult();
      }
      说明

      以上示例为简单任务代码处理器中的自定义参数配置,配置的参数名为 shardings。您也可以根据业务需求自主配置。

  2. 使用分片网关。

    您可以在创建或编辑拓扑任务时,为任务添加分片网关。这里以新建拓扑任务为例,配置步骤请参见 新建拓扑任务。其中,编辑拓扑图步骤的操作如下:

    1. 添加分片网关。

      在拓扑图中单击 add 图标,添加一对 分片网关,然后单击 确定

    2. 添加一个子任务。

      单击分片网关之间的 add 图标,然后在 添加节点 面板中选择步骤 1 创建的一个任务,单击 确定,将其添加为子任务。

    3. 设置分片网关规则。

      单击分片开始网关,然后设置以下参数:

      • 设置分片规则:输入简单或集群任务创建的自定义参数名,例如上述示例中的 shardings,然后单击对号保存分片规则。

      • 设置缓冲规则(可选):设置每次并发分片的任务数量,然后单击对号保存缓冲规则。

        配置缓冲规则可避免分片一次性下发给客户端处理,有效减少客户端缓存和处理压力。同时,缓冲队列支持动态伸缩,您可以在任务执行时新增客户端以分担未处理的分片任务。

        说明

        任务执行过程中,若分片网关的开始节点处于“执行中”状态时,您也可以动态修改分片执行的并发数。如开始节点仍处于未执行状态,则无法设置。

        Image 1
    4. 单击 提交

    5. 版本管理 页签,发布该任务版本。

    6. 单击右上角的 立即触发,触发该任务。

      您可在 调度记录 中查看该任务的执行实例。

查看分片节点状态

您可以在拓扑调度记录中查看各个分片的执行状态。

  1. 在拓扑任务列表,单击目标任务名称。

  2. 单击 调度记录 页签。

  3. 单击分片数右侧1按钮查看分片状态。

    例如,在下图的拓扑任务图中,分片节点有 5 个分片。其中,第 1、5 分片执行成功,第 2、4 分片执行失败,而第 3 分片执行了跳过操作,处于跳过状态。Image 2对于失败状态的分片节点,您可以进行实时的人工干预,选择重试或跳过全部失败任务。image.png