大量数据同步一致性问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
请不要在回答技术问题时复制粘贴 AI 生成的内容
15342

大量数据同步一致性问题

  •  
  •   15342 Jan 13, 2024 via Android 2633 views
    This topic created in 836 days ago, the information mentioned may be changed or developed.

    需求是把 es 的数据同步到 starrocks ,业务会拿 es 和 st 的数据做功能,需要保持数据的一致性。

    现在是使用定时任务每天同步 es 到 st ,还有业务触发同时修改的。修改方式很多导致数据不一致。而且每天新进的数据量有 2000 万左右。

    目前我想的是这个程序按消息级别去定时检测,有不一致的就同步。

    有没有其他方法可以让 es 和 st 最终数据一致?

    10 replies    2024-01-15 15:53:32 +08:00
    RicherWQ
        1
    RicherWQ  
       Jan 13, 2024
    我们之前是这么做的, 分全量同步和部分同步,全量同步每天定时同步一次, 部分同步就是业务触发的时候进行同步。要求你每条数据有版本号,这样更新的时候如果本地版本新就不更新了。
    flmn
        2
    flmn  
       Jan 14, 2024
    es 数据从哪来的?是程序直接修改么?还是也是从数据源同步过来的?

    一般这类情况,要用 CDC 方案才靠谱。
    Akitora
        3
    Akitora  
       Jan 14, 2024
    遇到过类似的问题,千万级数据同步到 redis ,当时有考虑过 CDC 方案,实现起来比较复杂,最终还是选择了 1L 类似的方案
    haimianbihdata
        4
    haimianbihdata  
       Jan 14, 2024 via Android
    看看 flink cdc 这边有没有方案
    noparking188
        5
    noparking188  
       Jan 14, 2024   1
    2000 万数据量不多,看了下 starrocks 支持流处理 https://docs.starrocks.io/docs/integrations/streaming/
    我熟悉的类似这种实时同步到 AP 数仓或者数据湖的方案,一般都 Kafka 队列,然后用个消费端根据 interval 和 buffer 及时往目标库分小批次的写。
    你给的信息不多,es 的数据是业务数据?那就同时写 es 和 starrocks ,可以加个离线任务每天对比两边数据是否一致
    nnegier
        6
    nnegier  
       Jan 14, 2024 via Android
    @RicherWQ #1 部分同步很好理解,全量同步是怎么操作呢?
    15342
        7
    15342  
    OP
       Jan 14, 2024 via Android
    @RicherWQ 全量是指每天新进的数据吗? 我们现在也是分成每天增量定时同步一次,业务触发处理。但是业务涉及的地方太多了(增删改),改的人又多,容易出问题。 数据的版本号是指修改后这条数据的新的版本号和数据库的这条对比吗?多谢

    @flmn es 的数据有 1.上游服务生成 2.我们自己的业务生成。cdc 我去了解下 多谢
    @haimianbihdata 多谢
    @noparking188 es 的数据有 1.上游服务生成 2.我们自己的业务生成。 上游生成的目前直接定时任务从 es 用导入到 st 的。 还有部分业务操作就 2 边同时修改的。但是业务要求数据一致性高。现在也是想这个程序去对比两边的数据。

    感谢各位大佬的解答。
    另外各位大佬有没有这种级别数据同步的监控档案吗? 没这方面的经验。
    RicherWQ
        8
    RicherWQ  
       Jan 15, 2024
    @nnegier 定时批量遍历查询写入
    RicherWQ
        9
    RicherWQ  
       Jan 15, 2024
    @15342 这个要自己考虑,和业务场景有关,先不考虑目前你们的数据方案是否合理,默认合理的话,无论修改的人和地方有多少都无所谓,首先可以确保修改的原数据没有问题就可以了,然后就是同步的问题了,你数据本身有版本号,每次变更都要加 1 ,这样就能知道哪个数据版本是新的了,你要同步到 starrocks ,那么就需要判断如果你同步过来的数据比 strrocks 里边的版本号低就不同步,反之就同步。如果你们数据变化多的话,你定时同步增量数据期间还会产生大量不一致数据,这个时候就要单挑变化一起同步了。
    15342
        10
    15342  
    OP
       Jan 15, 2024
    @RicherWQ 大致了解了,感谢。
    About     Help     Advertise     Blog     API     FAQ     Solana     3248 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 47ms UTC 13:40 PVG 21:40 LAX 06:40 JFK 09:40
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86