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

大数据量请求的 api 接口如何设计

  •  1
     
  •   banksiae · 2018-05-31 15:09:52 +08:00 · 7793 次点击
    这是一个创建于 2371 天前的主题,其中的信息可能已经有所发展或是发生改变。
    上次有个同事问了个问题,说有个接口,report 请求和返回的数据量都比较大,底层的数据量也比较大,然后反应就慢,说有没有什么方案。
    想了一下,除了队列,异步,接口轻量化拆分,然后没想什么好的办法。
    可以同事说,不能拆接口,数据要保持原样,这个想了好久没想出什么方案来,响应还要快,V 友们有什么方法没
    23 条回复    2018-06-01 12:47:44 +08:00
    wshcdr
        1
    wshcdr  
       2018-05-31 15:15:55 +08:00
    接口慢,用缓存啊。
    hooopo
        2
    hooopo  
       2018-05-31 15:23:29 +08:00
    这是一个需求问题,不是技术问题
    Braid
        3
    Braid  
       2018-05-31 15:24:52 +08:00
    能 orm 解决的尽量不要 api
    liprais
        4
    liprais  
       2018-05-31 15:26:22 +08:00
    为啥大数据量要通过 api 返回?
    Light3
        5
    Light3  
       2018-05-31 15:32:32 +08:00
    缓存???不知道你说的数据量大概多少?
    banksiae
        6
    banksiae  
    OP
       2018-05-31 15:49:18 +08:00
    意思是保持数据一致性的同时,提高性能。但是后端数据处理慢的话,同步怎么会快呢
    shalk
        7
    shalk  
       2018-05-31 15:58:31 +08:00 via iPhone
    听上去怎么像脑筋急转弯,一趟怎么快速运一堆货物. 没想到办法.
    提高网速和运算速度?我也不知道.
    mark
    spice630
        8
    spice630  
       2018-05-31 18:11:32 +08:00
    分块,云存储的上传和下载接口都是这样设计的.
    链接里的代码是 ucloud ufile 的上传接口
    https://github.com/songtianyi/rrframework/blob/master/storage/ufile.go#L198
    bk201
        9
    bk201  
       2018-05-31 18:16:52 +08:00
    大数据量除了分拆还是什么办法?压缩?
    luoway
        10
    luoway  
       2018-05-31 18:25:48 +08:00
    Stream
    提前处理接收到的部分数据
    liuxu
        11
    liuxu  
       2018-05-31 19:10:18 +08:00
    除了楼上们说的,如果可能的话,可以拆分后台服务,将串行步骤转为并行执行组合后返回
    LukeChien
        12
    LukeChien  
       2018-05-31 19:23:13 +08:00 via Android
    加机器
    night98
        13
    night98  
       2018-05-31 21:41:33 +08:00
    接口提前缓存好,每次请求直接拿缓存,除非你数据量上 G 级别,否则一般还是很快的。
    qloog
        14
    qloog  
       2018-05-31 22:02:45 +08:00
    一个接口不要吐出所有的东西,按功能拆分,这样就不会有数量的接口了。
    opengps
        15
    opengps  
       2018-05-31 22:07:14 +08:00 via Android
    软件都约束了不能动多少,就从硬件下手吧
    woscaizi
        16
    woscaizi  
       2018-05-31 22:12:13 +08:00 via iPhone
    数据量在多少呢?
    速度慢是在哪个环节呢?
    如果后端不拖速度,瓶颈就在网络传输了吧。
    jssyxzy
        17
    jssyxzy  
       2018-06-01 01:36:11 +08:00
    加 cache 啊
    ebingtel
        18
    ebingtel  
       2018-06-01 08:53:49 +08:00
    应该从同步调用,改为异步轮询吧……
    annielong
        19
    annielong  
       2018-06-01 09:25:43 +08:00
    如果是多条数据的话,不行就强行分页,再大数据 api 一次只生成 20 条传回来,哈哈
    willvvvvv1
        20
    willvvvvv1  
       2018-06-01 09:28:45 +08:00
    数据量大,多大?
    collinswang
        21
    collinswang  
       2018-06-01 09:30:04 +08:00
    看数据类型:
    如果是非实时数据,缓存+CDN
    如果是实时数据,对数据源数据进行缓存,并改为增量更新,只更新增量部分
    henglinli
        22
    henglinli  
       2018-06-01 10:21:16 +08:00 via iPhone
    @willvvvvv1 懂行的
    luozic
        23
    luozic  
       2018-06-01 12:47:44 +08:00
    先详细 metric 一下,实际现在的接口响应耗费的时间到底在哪? 再根据具体情况优化。 有些实际升级一下网络或者设置就可以解决问题。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4954 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 52ms · UTC 09:43 · PVG 17:43 · LAX 01:43 · JFK 04:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.