1. 概述
1.1 版本
| FineDataLink 版本 | 功能变动 |
|---|---|
| 5.0.11.1 | 实时任务中新增「Webhook输入」算子 |
1.2 应用场景
总部和分子公司之间跨系统传输/收集数据,需要提高时效性。
用户使用 FDL 的数据服务功能创建数据接收接口,将数据写入到数据库,发现无法对接收的数据进行处理,比如:
接收的数据为 JSON 格式,需要解析后才能使用。
接收的数据需要做一些处理例如汇总后才能使用。
用户希望对接收的数据处理后再入库。
解决方案一:此时如果使用定时任务接入数据库数据进行处理,会发现链路长,时效性低的问题,比如:
定时执行的时效性不够,执行间隔+执行时间达不到实时要求。
数据没有更新的时候,定时任务也会同步执行,会导致性能浪费。
部分系统例如简道云只能查询全量数据再比对,处理的数据量级很大,导致数据处理性能很慢。。
解决方案二:数据库开启实时数据获取>通过实时任务调用定时任务触发后续流程,会发现,使用了多个功能模块,交互复杂效率低下,增加了一个运维数据库的工作。
1.3 功能简介
1)数据服务功能中,发布数据接收 API 时,数据接收方式可选择「仅配置地址」,仅完成 API 接口配置,不进行数据写入。

2)实时任务中新增「Webhook输入」算子,接入数据接收发布的「仅配置地址」的 API,对数据进行处理后,再进行输出。

1.4 前提条件&注意事项
1.4.1 前提条件
1)需要注册接口协议(实时)功能点、数据服务基础包功能点、实时任务相关功能点
2)集群工程,数据服务功能中必须开启「消息队列中间件」按钮。

1.4.2 注意事项
1)Webhook输入算子不支持 FlinkSQL;由于Webhook是仅插入流,无法获知到更新事件,针对部分计算可能会和预期不符。
2)实时任务中使用「Webhook输入」算子,FDL 工程重启后,实时任务会启动失败,需要用户手动重启下实时任务;该问题后续会优化。
2. 示例
2.1 场景模拟
用户需要接收外部 SaaS 应用的数据,将数据写入数据库中存档,且上游无删除事件。
2.2 发布「仅配置地址」的API
1)数据服务模块,新建一个数据接收 API。

2)配置该 API 的请求方式(只支持POST)、路径、应用。如下图所示:

| 设置项 | 说明 |
|---|---|
| 服务接收方式 | 默认为仅配置地址 该设置项详细说明请参见:数据接收方式
|
| 其他设置项 | 详情请参见:数据接收-通用API接收 |
3)保存后,API详情页显示服务接收方式;API 状态为未上线,在实时任务中引用后,状态自动更新为上线。

4)将 API 地址复制到 SaaS 应用的 URL 地址框中。
2.3 新建实时任务
提示:1)新建一个实时任务。
2)实时任务中拖入「Webhook输入」算子,调用 2.2 节发布的 API,样本设置处填写API的JSON请求体(便于在后续节点中查看效果),如下图所示:

| 设置项 | 说明 |
|---|---|
| 服务名称 | 下拉框中显示有权限的,服务接收方式为「仅配置地址」的 API |
| 样本设置 | 可填写调用该 API 时的 JSON 请求体,便于继续后续的数据处理流程以及在后续节点中预览处理效果 |
| 测试服务 | 功能同 数据接收 中的测试调用效果 可填入接口请求,调用接口;此处会实际调用接口写入数据 |
| 已绑定的应用 |
显示 API 绑定的应用数量,可点击,查看完整 API 路径,支持复制 API 路径 |
| 同步类型 | 不可修改,默认为「仅增量同步」 |
点击「数据预览」,如下图所示:

3)拖入「JSON解析」算子,对调用 API 后获取的数据进行解析。如下图所示:

点击「数据预览」,如下图所示:

4)拖入「数据过滤」算子,对数据进行过滤。如下图所示:

5)拖入一个输出算子,将数据输出,启动该实时任务。
注:如果需要实现数据的更新,需要在目标端设置主键。
2.4 效果查看
本文用 Postman 模拟 SaaS 应用。
1)Postman 中写入数据:

2)发现实时任务的目标表中数据变动。

