通过XXL-JOB调度Dify工作流

Dify工作流在许多场景中需要依赖调度来实现自动化任务,如风险监控、数据分析、内容生成、数据同步等典型应用场景。然而,Dify原生并不支持调度功能。为解决这一问题,本文介绍如何集成XXL-JOB分布式任务调度,用于实现工作流应用的调度和状态监控,并确保工作流的稳定运行。

XXL-JOB调度核心功能

功能

概述

任务支持

支持调度自建的公网Dify工作流,以及阿里云内网环境下的自建Dify工作流。

灵活的时间配置

  • 支持多种时间类型:cronfixed_ratefixed_delayone_timeAPI调度,时间精度可达秒级。

  • 支持时区设置和自定义日历,满足全球化业务需求。

企业级报警与监控

  • 集成云监控联系人和联系人组管理,提供全面的企业级报警支持。

  • 灵活的报警策略:

    • 任务级别:失败报警、超时报警、成功通知。

    • 实例和应用级别:阈值报警。

  • 多渠道消息通知:支持短信、电话、Webhook和邮件等多种通知方式。

可观测性与调度大盘

提供企业级调度大盘,展示实例和应用级别的调度情况,包括调度趋势、成功率、失败率等关键指标曲线。

执行历史与事件追踪

  • 执行历史:记录每次Dify工作流的执行详情,包括状态、基本信息、输入输出参数、耗时及Tokens消耗等。

  • 调度事件:记录每次调度的相关事件,涵盖工作流和节点级别的事件信息。

  • 节点追踪:详细记录一次工作流执行中所有节点的运行情况,支持对循环、迭代和条件分支的深入下钻分析。

方案概览

配置XXL-JOB调度Dify工作流应用,只需3步:

  1. 创建Dify环境:创建一个ACK集群,在集群中安装ack-dify组件,然后访问Dify服务并创建工作流应用。

  2. 创建配置调度实例:通过创建XXL-JOB调度实例,在实例中创建应用对任务进行分组管理,然后配置任务参数连通Dify工作流应用。

  3. 测试接入情况:验证分布式调度功能是否能正常运行,并查看调度成功后的调度详情信息。

1. 创建Dify环境

①部署Dify环境

一键部署Dify环境,完成安装ack-dify组件、为Dify服务开启公网等操作。

说明

公网访问便于演示操作,如果您在生产环境中部署,为了您的应用数据安全,建议您开启访问控制功能。

如果您首次使用ACK集群,不了解集群的创建流程,您可以单击一键部署,创建Dify服务所需要的运行环境。本方案使用ACK应用市场的ack-dify应用模板,通过Helm低成本快速部署Dify应用,满足开发和测试需求。

重要

建议您在使用一键部署之前检查是否已开通和授权容器服务ACK集群。具体操作,请参见快速创建ACK托管集群

  1. 单击一键部署资源编排ROS中选择您的地域(可选)华东1(杭州),然后按照ROS模板选择您的集群可用区实例规格实例密码安全确认等重要信息,其余信息保持默认即可,设置完成后点击创建

  2. 由于集群所需资源较多,需要您耐心等待10分钟左右完成。集群创建完成后,登录容器服务管理控制台,在左侧导航栏选择集群列表单击目标集群名称,进入集群详情页面,依次单击工作负载 > 容器组,命名空间为dify-system,查看目标集群是否已正常安装ack-dify组件资源。

  3. (可选)如果您发现有Pod处于Pending状态,可能是因为已有集群缺少ack-difyPVC依赖,请为集群创建默认的CNFS文件系统以及对应的NAS StorageClass。具体操作,请参见通过CNFS管理NAS文件系统(推荐)。更多Pod异常问题排查,请参见Pod异常问题排查

ack-dify组件安装完成后,您可继续执行下一步操作。

②查看外部IP地址(External IP)地址

配置完成后,依次单击网络 > 服务 > ack-dify,命名空间为dify-system,您会看到ack-dify服务的外部IP地址(External IP),将该外部IP地址输入浏览器地址栏即可访问Dify服务。

image

③注册Dify服务

访问外部IP地址(External IP),请根据页面提示设置管理员账户(即邮箱地址、用户名和密码),以注册Dify平台来使用服务。

image

④创建Dify工作流应用

为了后续的调度测试,您需要新建一个简单Dify工作流示例。您可将提供的文件dify-flow.yml导入Dify中,快速搭建工作流应用,并完成发布更新。

重要

通过XXL-JOB调度Dify工作流,仅支持Dify工作流应用,对于chat类型应用暂不支持。

image

2. 创建配置调度实例

①创建实例

登录XXL-JOB控制台,并在顶部菜单栏选择地域,单击创建实例,引擎版本≥2.2.0。

  • 地域:Dify集群环境地域保持一致。

  • 实例名称:Dify-demo。

  • 专有网络VPC:Dify集群环境VPC保持一致。

image

②创建应用

在使用XXL-JOB任务前,您需要先创建应用。创建应用是为了对任务进行逻辑分组管理。每个应用可以视为一个独立的任务执行单元,便于后续对任务进行统一查看、配置和调度。

XXL-JOB版实例页面,找到目标实例,在操作列单击任务管理。在左侧导航栏,选择应用管理,然后单击创建应用

  • AppName:如Dify-AppName。

  • 名称:如Dify-AppName。

  • AccessToken:系统自动生成。

image

③创建任务

任务是具体业务逻辑的调度单元,应用创建后,需要与任务执行器进行绑定,通过AppName注册到应用后,执行该应用下的任务。

说明

如果没有提前创建应用,执行器无法正确注册,导致任务无法正常调度和执行。

  • 任务名称:Dify-test。

  • 关联应用:已创建的应用,如Dify-AppName。

  • 任务类型:Dify工作流。

  • 其他:保持默认即可。

image

④配置任务参数

Dify工作流应用发布更新后,选择访问API,即可查看所需的任务参数。

  • Endpoint:Dify工作流的API服务器。

  • API Key:Dify工作流的API密钥,不同的工作流有不同的密钥。

  • 输入:工作流的输入,JSON格式。

    {"input_text": "what is your name"}

image

3. 测试接入情况

①运行测试任务

为了验证分布式调度功能是否能正常运行,您还需要对任务进行调度测试。您可以选择任务管理单击运行一次,即可对调度任务进行测试。

image

②查看调度详情

选择执行列表,单击详情,查看调度任务详情信息。可以看到测试调度任务已经成功,并可查看详情信息。

image.png

③详情信息

  • 单击详情,查看基本信息

  • 单击详情,查看输入输出

  • 单击详情,查看节点追踪。

    说明

    对于迭代器、循环分支等结构,还支持进一步查看更详细的节点信息或数据。

image.png

免责声明

Dify on ACK是仅针对阿里云ACK环境适配开源项目DifyHelm部署方案,实现DifyACK的快速部署。ACK不对Dify应用本身的运行或与其他生态系统组件(如插件、数据库等)的兼容性做出保障。对于您在使用Dify过程中因Dify本身及其生态组件的缺陷而导致业务受损的情况,ACK不提供赔偿或者补偿等商务服务。建议您关注开源社区的更新动态,主动修复开源软件中的问题,以确保Dify的稳定和安全。