V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
whats
V2EX  ›  程序员

各位大佬,并行的 2 条队列数据怎么做实时融合

  •  
  •   whats · 2021-11-18 14:18:49 +08:00 · 2111 次点击
    这是一个创建于 1130 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景:

    1. 有 2 个数据源分别实时向 kafka 两个 topic ( topicA, topicB )写数据,A ,B 数据量日均一千万左右。
    2. topicA, topicB 数据写入顺序略微不同,理论上 A, B 路数据一一对应,通过唯一 ID 可以关联,实际可能会漏数据,也就是存在一部分关联不上的数据。

    需求:

    1. 需要两个 topic 数据关联上后(都消费到后)再执行后面的操作,且时效性要求较高(因此无法通过离线关联)。

    各位彦祖有没好的方案或者工具可以处理这种情况。

    13 条回复    2021-11-19 16:07:55 +08:00
    Itoktsnhc
        1
    Itoktsnhc  
       2021-11-18 15:13:07 +08:00   ❤️ 1
    感觉是 Flink
    Itoktsnhc
        2
    Itoktsnhc  
       2021-11-18 15:17:17 +08:00
    自己实现应该有一个窗口期,比如 5 分钟,从 Topic A 和 B 中取数据,每份数据没有匹配最多向后等待一个窗口期,超时后没有匹配到扔到错误处理流程。正确匹配的数据合并后进入成功的 Topic 作为下游处理队列
    xx6412223
        3
    xx6412223  
       2021-11-18 15:23:31 +08:00
    源端无法保障,你需要的是一个错误处理流程
    masterclock
        4
    masterclock  
       2021-11-18 16:47:59 +08:00
    flink stateful functions 似乎可以比较好地解决
    SbloodyS
        5
    SbloodyS  
       2021-11-18 17:04:41 +08:00
    Flink 搞定
    SmiteChow
        6
    SmiteChow  
       2021-11-18 17:34:54 +08:00
    需要前置一个过滤器消费者,整合任务并生产新任务

    消费者至少有两个逻辑
    1. 批量拉两个 topic 的任务,然后整合
    2. 标记整合失败的任务,如果次数或时间大于一定阈值内丢弃任务,其他则重新放回队列等待下次整合
    SmiteChow
        7
    SmiteChow  
       2021-11-18 17:40:53 +08:00
    另外不要用 Flink 来做这个事,杀鸡焉用牛刀,Flink 是用来在流上做聚合运算的。

    你要的不过是整合一个完整的参数给消费者消费。
    MoYi123
        8
    MoYi123  
       2021-11-18 17:50:30 +08:00
    加个 redis, 拿到数据的时候查不到就写入, 能查到就直接合并不就好了.
    azkaban
        9
    azkaban  
       2021-11-18 18:16:34 +08:00
    标准的 flink 双流 join 场景
    azkaban
        10
    azkaban  
       2021-11-18 18:17:48 +08:00
    @SmiteChow 他这个需求就是简易的实时数据打宽,很标准的 flink 实时数仓场景
    whats
        11
    whats  
    OP
       2021-11-18 18:21:42 +08:00
    大家似乎都觉得 flink 做比较合适
    SmiteChow
        12
    SmiteChow  
       2021-11-19 10:11:52 +08:00
    @azkaban 你根本没理解聚合的意思,另外你可以说 flink 是实时流运算,因为它可能直接对接了实时的流,你也可以说数据仓库能应对实时取数的场景,但你不能说 flink 是应对实时数据仓库的,这是两个概念。
    azkaban
        13
    azkaban  
       2021-11-19 16:07:55 +08:00
    @SmiteChow flink 不是专门做实时数仓的,但是实时数仓确实是 flink 的一大应用方向啊,ffa 上实时数仓可是几大专场之一
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2748 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 14:54 · PVG 22:54 · LAX 06:54 · JFK 09:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.