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

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

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

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

    有一个 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  
       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   ·   实用小工具   ·   2655 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 02:05 · PVG 10:05 · LAX 18:05 · JFK 21:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.