V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Zerah
V2EX  ›  Java

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

  •  
  •   Zerah · 8 天前 · 2000 次点击

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

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

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

    感谢各位大佬。

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

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

    找一个方法确定数据的游标, 每次拿数据只拿比当前游标更加新的数据
    VeryZero
        8
    VeryZero   8 天前
    方法 1:放弃轮训,改为推送
    方法 2:增加一个返回 md5 的接口,先请求该接口确定数据有没有变化,变化以后再请求另一个接口,减少开销
    learningman
        9
    learningman   8 天前 via Android   ❤️ 2
    @VeryZero 不用 MD5,标准里就有用来干这个的。Etag
    Yunen
        10
    Yunen   8 天前
    使用 websocket 进行主动推送,只推送新内容就好
    SingeeKing
        11
    SingeeKing   8 天前 via iPhone   ❤️ 1
    为什么我看楼主的需求好像 API 是第三方提供的
    luozic
        12
    luozic   8 天前
    md5 + 变更滑动窗口。
    screen
        13
    screen   8 天前 via iPhone
    差量更新+cdn
    lu5je0
        14
    lu5je0   8 天前 via Android
    可以参考游戏更新
    GGGG430
        15
    GGGG430   6 天前
    长连接要求较高不建议, 拆分接口比较容易
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2240 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 00:44 · PVG 08:44 · LAX 17:44 · JFK 20:44
    ♥ Do have faith in what you're doing.