前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Tips | Flink sink schema 字段设计小技巧

Tips | Flink sink schema 字段设计小技巧

作者头像
公众号:大数据羊说
发布2021-08-19 14:23:28
4920
发布2021-08-19 14:23:28
举报
文章被收录于专栏:大数据羊说

❝本系列每篇文章都比较短小,不定期更新,从一些实际的 case 出发抛砖引玉,提高小伙伴的姿♂势水平。本文介绍 Flink sink schema 字段设计小技巧,阅读时长大概 3 分钟,话不多说,直接进入正文! ❞

sink schema 中添加 version 版本字段

如 title,直接上实践案例和使用方式。

实践案例及使用方式

  • 「非故障场景下产出的每条记录的 version 字段值为 1」
  • 「故障场景下,可以在同一 sink 中产出 version > 1(非 1)的数据,代表故障修复数据提供给下游消费」

可应对的故障场景

上游 flink 任务 A 发生故障导致产出脏数据至 kafka X,并且下游消费方消费了脏数据(下游消费方按照下面两类进行划分):

  • 「下游为 flink 任务」:flink 任务 B 消费 kafka X 中的脏数据,结果计算并产出错误数据
  • 「下游为 OLAP 引擎以及 BI 看板」:结果导致看板展示数据异常

首先介绍下避免以及处理上述问题的整体思路:

  • 「1.优化逻辑,保障上游任务稳定性」:首先通过一些优化手段,尽可能保证上游 flink 任务 A 不出现故障
  • 「2.配置作业监控报警」:针对整条链路配置对应的监控报警等,以及时发现和定位问题
  • 「3.制定故障处理、修复预案」:需要制定对应的故障处理、修复预案,一旦出现故障,需要有可处理故障的能力
  • 「4.下游针对数据源特性改进消费和处理方式」:保障即使消费了脏数据也不会对业务逻辑产生影响

下文主要介绍「第 3 点」,出现上述故障时修复的方案,针对以上场景,目前有如下 3 种可选方案修复数据:

  • 「方案 1 - 离线方式修复」:通过离线方式产出修复数据,对脏数据进行覆盖操作。缺点是故障修复延迟较高,需要切换离线、实时数据源,人工操作成本较高
  • 「方案 2 - 实时方式修复」:重跑修数逻辑,产出修复数据至 kafka X-fix,下游 flink 任务 B 重新从 kafka X-fix 中的指定 offset 开始消费,计算并产出正确的数据。此方案对下游 flink 任务 B 来说,需要改动代码逻辑,存在修数 topic 和原 topic 切换逻辑,修复逻辑较为复杂
  • 「方案 3 - 实时方式修复(本小节 version 字段方案)」:为避免下游产生数据源切换操作带来的高成本操作,可在原有 kafka topic 中产出修复数据,通过 version 字段区分正常产出数据以及修复数据,相对方案 1 和 2 的优点在于,不存在数据源切换逻辑,下游通过控制 version 字段值就可消费到对应的修复数据,明显降低人工操作成本,且修复逻辑相对简单

❝Note: 方案 3 需要对 Kafka X 预留一定的 buffer,否则在产出修复数据时,由于写入或读出 Kafka X 的 QPS 过高,会影响正常产出数据的任务。 ❞

sink schema 中添加时间戳字段

实践案例及使用方式

有窗口场景中,sink schema 中可添加以下字段:

  • 「flink_process_start_time(long):代表 flink 窗口开始逻辑处理的时间戳」
  • 「flink_process_end_time(long):代表 flink 窗口结束逻辑处理的时间戳」
  • 「window_start(long):代表 flink 窗口开始时间戳」
  • 「window_end(long):代表 flink 窗口结束时间戳」

生产实践案例

  • 「flink_process_start_time,flink_process_end_time 在开发、测试、验数阶段可帮助用户定位数据偏差原因」
  • 「window_start,window_end 可以帮助用户定位每个窗口处理是否有丢数,及每个窗口处理的具体数据」

总结

本文主要介绍了在 sink schema 中添加 version(版本),时间戳扩展字段的小技巧,以帮助用户在生产环境中提升实时数据故障修复效率以及可用性。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据羊说 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • sink schema 中添加 version 版本字段
    • 实践案例及使用方式
      • 可应对的故障场景
      • sink schema 中添加时间戳字段
        • 实践案例及使用方式
          • 生产实践案例
          • 总结
          相关产品与服务
          大数据
          全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档