聊聊EasyData的触发器节点

一、触发器节点介绍

网易数帆大数据开发平台提供了强大的调度系统,但用户也可能有自己的调度系统,实现一些定制化的能力,比如在自己的调度平台实现ODS层数据入湖,在网易数帆大数据开发平台做后续的加工,这时就需要将两个调度系统打通,实现跨系统之间的任务依赖,该如何做呢?针对这类场景,触发器节点就可以大显身手。

二、触发器节点原理

触发节点可以有上游节点,也可以没有。在计划执行时间到达且触发节点的上游任务运行成功后,触发节点会进入运行中状态,等待外部调度系统的事件。如果收到外部调度系统的成功事件,触发器节点状态变为运行成功,调度系统同时会给元数据中心推送触发器节点血缘,触发器节点的下游任务可以开始运行。

如果收到外部系统的失败事件,触发器节点状态会变为运行失败,和其他节点类似,如果有配置失败报警,会触发后续的失败消息推送。如果收到外部系统的运行中事件,触发节点状态会保持不变,同时在日志中记录事件消息,用户可以在消息中携带外部调度系统的进度,这样可以在EasyData的日志中看到外部调度系统的进度信息。

三、触发器节点使用

1.节点配置

EasyData 免费试用>>

从控制节点中拖拽一个“触发器节点”,“触发器节点”会生成一个节点定位标识,该标识会在下文介绍的OpenAPI接口中使用。“外部触发源头任务”和“备注信息”用于配置外部调度系统的任务信息,在触发器节点任务运行时,这两个信息会被记录到运行日志中,便于用户快速跳到外部调度系统的任务。

“自定义血缘”允许用户为该节点配置血缘,在该节点运行成功后,血缘信息会被存储到元数据中心,后续在配置下游任务依赖时,触发器节点任务会被自动推荐出来。比如,下游的SQL节点使用了`intern_new`.`ods_trigger`表作为任务的输入表,那么该节点在配置任务依赖时,智能推荐依赖会自动推荐出该触发器节点。

2.开发模式立即运行

在开发模式运行后,触发器节点任务会进入“运行中”状态,等待触发事件。对于开发模式,触发事件可以有2种触发方式,一种是在页面手动触发成功,点击后会发送成功事件,如下图,此时该节点状态会变为成功,下游节点可以开始运行。另一种触发则是通过OpenAPI来触发,OpenAPI的时候下文会做详细介绍。

3.线上调度运行

EasyData 免费试用>>

在计划执行时间到达且上游任务成功后,触发器节点状态将会变为运行中,等待外部系统的触发事件,EasyData平台同样提供了2种触发机制。

  • OpenAPI触发。用户通用调用OpenAPI接口来发送触发事件,这是常规的使用方式。
  • 手动触发成功。用户在EasyData页面触发,这种并不是常规使用方式,仅用于一些异常场景的使用,比如外部系统出现异常,需要EasyData平台的任务还可以继续正常运行,此时就可以使用该功能。

一旦EasyData平台收到成功事件后,触发器节点任务状态会变为成功,调度系统会向元数据中心推送血缘数据,下游节点可以继续运行。如果收到失败事件,该节点状态会变为失败,触发后续的报警事件。如果收到运行中,该节点状态会保持不变,仅在日中记录该消息。

4.重跑和补数据

实例重跑和线上调度类似,也需要触发事件,EasyData同样提供了OpenAPI触发和手动触发两种机制,这里不再赘述。补数据和其他运行方式不同,触发节点的任务不会等待外部事件,一旦上游任务运行成功,触发器节点任务会自动变为成功。

5.OpenAPI触发

前面提到,外部调度系统可以通过OpenAPI来发送触发事件,用户可以使用OpenAPI文档中的/task/v1/job/trigger接口,接口如何使用可以参考OpenAPI,这些不再赘述。在使用时,需要特别注意:

  • 终态事件:事件类型包括成功、失败和运行中。其中,成功和失败是终态事件,决定触发器节点运行状态是成功还是失败,如果成功则节点状态变为成功,向元数据中心推送血缘,并继续运行下游节点。如果失败则触发器节点任务失败,不会向元数据中心推送血缘,失败后和其他类型节点表现行为一致,比如触发基线报警等。运行中是非终态事件,只用于调度系统记录日志,暂无其他用途。
  • 事件重复:同一个计划时间如果推送了多条消息,EasyData调度系统收到第一个终态事件(成功或者失败)后,该计划时间对应的实例就会结束,后续的事件EasyData调度系统会记录入库,在事件未失效前,如果又有了该计划时间的实例(比如通过重跑拉起),会继续消费之前未使用的事件。举个例子,EasyData收到运行中、运行中、失败、运行中、成功这几个事件,该触发器节点实例在收到第1个失败事件后,任务状态会变为失败。此时,调度系统还存了运行中、成功2个事件,如果这两个事件未过期,任务又被重跑,调度系统就会消费这两个事件,该实例状态变为成功。先生成实例后收到事件,先收到事件后生成实例,两者处理方式一致。
  • 并发控制:事件通过HTTP来通知,触发方对于某个计划时间的实例不要并发发送事件,否则可能会导致事件乱序。如果触发方并发发送事件,EasyData只会按照事件落库的时间顺序消费,遇到终态事件后该实例就会结束,后面事件都不会处理。举个例子,触发方依次发送运行中、运行中、失败、运行中、成功,EasyData调度系统的落库顺序为运行中、运行中、成功、失败、运行中,EasyData调度系统将依次处理成运行中、运行中、成功,该实例结束,后续事件不再处理。
  • 事件时效性:事件有时效性,一般是向前、向后24小时,超过该时间事件则会失效被删除。

四、小结

EasyData通过触发器节点对外提供了一种扩展机制,允许用户与自己的调度系统打通,实现自己的一些定制化业务逻辑。除了调度系统的打通,在金融行业,也可以用于清算标识的通知,用户可以结合自己的业务场景来扩展更丰富的功能。

图片

图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值