企业对"实时"的诉求,正在从"可选项"变成"必选项"。制造业产线异常需要秒级响应,零售库存变化需要分钟级同步,业务系统间的数据交换不再接受 T+1 延迟。但市场上现有的实时计算工具,和业务之间存在一条明显的鸿沟。
过去基本只有两条路:用 Flink/Spark 等开源框架,能力上限高但门槛也高——需要专门团队写代码、运维集群;用云厂商托管服务,运维门槛低了,但数据源打通成本高、国产化支持弱、长期成本不可控。两条路指向同一个矛盾:实时计算的技术能力在快速进化,但企业获取和使用这些能力的方式,仍然太重了。
这也是 FineDataLink 5.0 推出实时计算模块时,我特别关注的原因——它的核心思路不是做另一个 Flink 替代品,而是把实时计算的复杂度封装起来,让更多企业能以更低门槛用上实时能力。
为了验证这个判断是否成立,我花了一些时间对 FineDataLink 5.0 的实时计算模块做了一次完整的实测。
实测一:从 Kafka 到实时看板,零代码全链路搭建
我选择的第一个测试场景,是实时计算中最典型的链路:从消息队列接入数据,经过清洗和计算,最终写入数据库供实时大屏消费。
配置过程
在 FineDataLink 5.0 中新建一个实时任务,数据源选择 Kafka 输入。填写 Topic、Broker 地址和消费组信息,这一步和大多数工具的配置方式类似,没有额外门槛。
关键差异出现在数据处理环节。Kafka 中流入的通常是 JSON 格式的原始数据,在传统方案中,这一步需要写代码做 JSON 解析和字段映射。在 FineDataLink 中,我直接通过界面拖入一个"JSON 解析"节点,选择需要解析的字段路径,系统自动完成字段展开。接着拖入"字段设置"节点做字段筛选和重命名,再拖入"数据过滤"节点按条件过滤无效数据。
整个数据处理链路的搭建,全部通过拖拽和配置完成,没有写一行代码。
实时计算环节
接下来是核心的实时计算部分。我需要将解析后的数据按业务维度做分组汇总,计算实时聚合指标。
FineDataLink 提供了两种计算引擎选择:内置计算引擎和 Flink 外置计算引擎。
我先用内置引擎尝试。拖入"分组汇总"节点,选择分组字段和聚合方式(求和、计数、均值等),配置完成后直接运行。从操作体验来说,和离线 ETL 中的分组汇总几乎没有区别,但数据是实时流入、实时计算、实时输出的。
为了对比,我又在同一个场景下切换到 Flink 外置引擎,通过"FlinkSQL"节点编写了一段 SQL 实现相同的聚合逻辑。Flink 引擎在复杂计算场景下确实更灵活,但配置步骤也更多——需要先部署 Flink 集群、配置连接信息。
数据输出与消费
计算完成后,将结果写入关系型数据库。FineDataLink 支持直接输出到 MySQL、Oracle、ClickHouse 等多种目标库,配置方式与普通数据同步任务一致。
写入完成后,我在 FineBI 中配置了实时数据源,搭建了一个简单的实时大屏。从 Kafka 数据流入到看板数据刷新,端到端延迟在秒级。
实测结论
| 环节 | 操作方式 | 耗时 | 代码量 |
|---|---|---|---|
| Kafka 数据源配置 | 界面填写 | 2 分钟 | 0 |
| JSON 解析与字段映射 | 拖拽配置 | 3 分钟 | 0 |
| 数据过滤与清洗 | 拖拽配置 | 2 分钟 | 0 |
| 实时分组汇总(内置引擎) | 拖拽配置 | 2 分钟 | 0 |
| 实时分组汇总(Flink 引擎) | FlinkSQL 编写 | 5 分钟 | 约 10 行 SQL |
| 目标库输出配置 | 界面填写 | 2 分钟 | 0 |
| 全链路合计 | 界面配置为主 | 约 15 分钟 | 0(内置引擎)/ 10 行 SQL(Flink) |
这个测试给我的直观感受是:FineDataLink 实时计算模块的真正价值,不在于它比 Flink 算得更快——那也不是它的定位——而在于它让一条原本需要开发团队投入数天甚至数周的实时数据管道,变成了一个业务分析师或数据工程师可以在几十分钟内完成配置的事情。
实测二:MQTT 物联网数据实时接入
第二个测试场景,我选择了制造业中非常典型的 MQTT 设备数据接入。
在制造业场景中,生产设备通过 PLC、传感器采集数据,通过 MQTT 协议发送到消息中间件。传统做法是需要开发团队编写 MQTT 客户端代码,解析设备数据格式,再写入数据库。这个过程不仅开发周期长,而且每对接一类新设备,往往需要重复开发。
FineDataLink 5.0 直接内置了 MQTT 输入节点。配置过程很简单:填写 MQTT Broker 地址、Topic 和 QoS 参数,选择数据解析方式(JSON 或自定义),系统就开始实时消费设备数据。
我模拟了一个简单的产线设备数据流——设备 ID、运行状态、温度、产量等字段通过 MQTT 持续发送。FineDataLink 接收到数据后,通过 JSON 解析节点完成字段提取,再通过"新增计算列"节点计算实时指标(如设备综合效率 OEE),最终写入数据库。
整个过程大约 10 分钟完成配置。而在传统方案中,仅 MQTT 客户端的开发和部署通常就需要 1-2 天。
实测三:实时数据预警与通知
第三个测试场景,是实时数据预警。这也是企业最常提到的需求之一——"当某个指标超过阈值时,能不能实时通知我?"
在 FineDataLink 中,这个场景的配置路径很直接:在实时数据处理链路中增加一个"数据过滤"节点,设置阈值条件(如温度 > 85℃),然后在任务中配置消息通知节点,选择通知方式(邮件、企业微信、钉钉等)。
我测试了一个简单场景:当模拟的设备温度超过阈值时,自动发送企业微信消息通知。从数据流入到通知发出,延迟在 3 秒以内。更重要的是,通知内容可以直接携带异常数据明细,接收人无需登录系统即可看到具体问题。
这个能力看似简单,但在实际业务中价值很大。很多企业的实时数据预警,要么需要额外开发告警逻辑,要么只能通知"有异常"而无法告知"哪里异常"。FineDataLink 将数据判断和通知集成在同一个任务中,减少了系统间的对接成本。
几个值得注意的边界
实测过程中,我也注意到一些需要客观说明的边界:
第一,内置引擎的复杂计算能力有限。 对于多流关联、窗口计算、复杂事件处理等高级场景,内置引擎的能力不如 Flink 引擎。FineDataLink 的策略是用内置引擎覆盖 80% 的常见场景,复杂场景交给 Flink。这个取舍是合理的,但用户在选择引擎时需要根据自身场景评估。
第二,实时计算对源端和目标端的性能有要求。 实时任务持续运行,对消息队列、数据库的读写压力是持续的。如果源端或目标端的性能不足,实时任务可能会成为瓶颈。FineDataLink 提供了断点续传和任务监控能力,但基础设施的规划仍然需要提前考虑。
第三,实时计算模块更适合中大型企业。 从目标客群来看,FineDataLink 5.0 的实时计算主要面向 30 亿以上营收规模的企业。对于中小企业来说,实时需求可能还没有强烈到需要专门部署实时计算平台的程度。
重新理解实时计算的"门槛"
这次实测下来,我最大的感受是:实时计算的技术门槛,从来不在"计算"本身,而在"集成"和"运维"。 FineDataLink 5.0 做的事情,不是发明新引擎,而是把"集成"的复杂度大幅降低了——让制造业 MQTT 设备接入、零售实时库存同步、业务系统 CDC 交换这类场景,不需要专门组建 Flink 团队、不需要维护独立流计算集群,在一个平台上完成全链路配置。
当然,复杂事件处理、毫秒级延迟、大规模状态管理,Flink 仍然是更合适的选择。FineDataLink 保留了 Flink 外置引擎的接入能力,让用户根据场景在两种模式间切换。这种"双引擎"策略,才是最务实的地方——不试图用一个引擎覆盖所有场景,而是让用户在轻量和强大之间自由选择。