一个数据量很大的 API 接口,需要实时更新有什么好的解决办法吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Zerah
V2EX    Java

一个数据量很大的 API 接口,需要实时更新有什么好的解决办法吗?

  •  
  •   Zerah 2021-05-02 14:05:46 +08:00 3848 次点击
    这是一个创建于 1628 天前的主题,其中的信息可能已经有所发展或是发生改变。

    各位大佬好,现在我这里遇到的请求是这样的。

    有一个 POST 接口,每次返回 JSON 数据大小在 5MB - 10MB 左右,每次请求会有一些新数据,但是短时间间隔内会有重复的数据且大部分是重复数据

    请问有什么方案可以更好的解析数据,提取我要的新数据,我拿到新数据再处理数据。

    感谢各位大佬。

    15 条回复    2021-05-04 17:44:20 +08:00
    ichanne
        1
    ichanne  
       2021-05-02 14:08:27 +08:00 via iPhone
    长连接?
    imdong
        2
    imdong  
       2021-05-02 14:22:19 +08:00 via iPhone
    比较好的方案就是,首次加载完整数据,同时长连接接收变动数据推送。

    本地实时合并数据。
    opengps
        3
    opengps  
       2021-05-02 14:23:03 +08:00
    分为两个接口:
    1,全量接口
    2,差异接口
    opengps
        4
    opengps  
       2021-05-02 14:24:51 +08:00   1
    所谓差异接口,其实是比对时间,更新时间大于某个点的,返回,客户端调用时候需要把上次的全量时间传入,其实就是一层更新时间过滤,来减少返回量
    Lemeng
        5
    Lemeng  
       2021-05-02 14:26:24 +08:00
    嗯嗯,楼上说的是目前通用的
    redtea
        6
    redtea  
       2021-05-02 15:01:34 +08:00
    JSON 结构调整一下,返回时数据压缩一下,就能小很多了。
    Jooooooooo
        7
    Jooooooooo  
       2021-05-02 15:03:52 +08:00   1
    数据量大, 总是有新增, 新增又很少, 考虑怎么做成增量同步的.

    找一个方法确定数据的游标, 每次拿数据只拿比当前游标更加新的数据
    VeryZero
        8
    VeryZero  
       2021-05-02 15:14:29 +08:00
    方法 1:放弃轮训,改为推送
    方法 2:增加一个返回 md5 的接口,先请求该接口确定数据有没有变化,变化以后再请求另一个接口,减少开销
    learningman
        9
    learningman  
       2021-05-02 16:06:15 +08:00 via Android   2
    @VeryZero 不用 MD5,标准里就有用来干这个的。Etag
    Yunen
        10
    Yunen  
       2021-05-02 16:53:50 +08:00
    使用 websocket 进行主动推送,只推送新内容就好
    SingeeKing
        11
    SingeeKing  
    PRO
       2021-05-02 17:50:09 +08:00 via iPhone   1
    为什么我看楼主的需求好像 API 是第三方提供的
    luozic
        12
    luozic  
       2021-05-02 18:00:01 +08:00
    md5 + 变更滑动窗口。
    screen
        13
    screen  
       2021-05-02 19:18:10 +08:00 via iPhone
    差量更新+cdn
    lu5je0
        14
    lu5je0  
       2021-05-02 19:32:48 +08:00 via Android
    可以参考游戏更新
    GGGG430
        15
    GGGG430  
       2021-05-04 17:44:20 +08:00
    长连接要求较高不建议, 拆分接口比较容易
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5421 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 08:28 PVG 16:28 LAX 01:28 JFK 04:28
    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