• 请不要在回答技术问题时复制粘贴 AI 生成的内容
shuAS
V2EX  ›  程序员

api 接口如何做到毫秒级响应?

  •  
  •   shuAS · Jul 9, 2019 · 12157 views
    This topic created in 2676 days ago, the information mentioned may be changed or developed.

    如题,向各位前辈咨询一下

    41 replies  •  2019-07-10 10:00:18 +08:00
    dongrenwen
    dongrenwen
    Jul 9, 2019
    1
    可以用钱解决,顶级的服务器和网络线路,高度优化的代码
    shawndev
    shawndev
    Jul 9, 2019❤️1
    2
    localhost
    dobelee
    dobelee
    Jul 9, 2019 via Android
    3
    网络质量
    服务器性能
    业务逻辑
    框架复杂度
    依赖外部资源的服务质量
    一个一个解决。
    guokeke
    guokeke
    Jul 9, 2019❤️11
    4
    设置 timeout=1ms 毫秒级超时响应。
    learningman
    learningman
    Jul 9, 2019
    5
    用低级语言写,比如用汇编写 qwq
    ys1992
    ys1992
    Jul 9, 2019 via Android
    6
    别想了,除非接口数据不经过 MySQL 这种数据库,不然数据量大一点光 SQL 查询就得几十上百毫秒了
    liuzhedash
    liuzhedash
    Jul 9, 2019❤️1
    7
    公网上个位数毫秒不太可能。几个优化建议:
    1、dns 查询的时间是不稳定的,有时候甚至可能根本查不到,所以一定要做 dns 预解析
    2、任何系统部署在 ssd 上都会有直接的性能提升
    剩下就是网络、代码逻辑、数据库层面的优化了,这个没什么通用方案。
    silencefent
    silencefent
    Jul 9, 2019❤️1
    8
    hello word
    lzxz1234
    lzxz1234
    Jul 9, 2019
    9
    分场景,如果是查询接口,数据异步扔缓存,接口只查缓存,毫秒级压力不大
    xiaopengzi
    xiaopengzi
    Jul 9, 2019
    10
    楼上老哥 设置 1ms 超时响应确实是个好主意。。100%空手接白 ~额不对 100%毫秒级响应
    ---
    响应时间越低,需要付出得人力和资源成本增长越陡
    azh7138m
    azh7138m
    Jul 9, 2019
    11
    @liuzhedash 每个市一个机房勉强可以个位数毫秒,这就要求钱加足了(
    不过楼主应该指 1s 以内的意思吧
    不过没有场景也没有 mvp 也没有数据量
    这种就叫开放式吹*吧
    knightgao2
    knightgao2
    Jul 9, 2019
    12
    做缓存
    yulitian888
    yulitian888
    Jul 9, 2019❤️2
    13
    什么用途 /性质 /功能的 API ?
    一个请求的毫秒级响应还是并发请求的毫秒级响应?
    嘛都不说,没头没脑的问题,没法答
    影响程序相应的最大瓶颈一般都是 IO。一般而言 IO 速度最慢的顺序是:网络>HDD>SSD>RAM>寄存器,自己分析哪块是你的 API 瓶颈,再具体想办法优化就是了。

    不过我也见过有些啼笑皆非的负优化。
    某人企图用 Redis 提升查询性能,但是把 Redis 部署在局域网另一台机器上。好巧不巧的是,路由器上被人插了一个百兆设备(路由器自适应降速到百兆了),然后在这个“百兆局域网”里的 Redis 不光没能提速,反而降速了。
    rb6221
    rb6221
    Jul 9, 2019❤️2
    14
    那位大人呢,还没来吗
    lihongjie0209
    lihongjie0209
    Jul 9, 2019
    15
    1. 把数据库打包发送给客户
    2. 把数据库的数据都加载到内存
    3. 起一个本地服务器
    4. 访问接口
    usdf
    usdf
    Jul 9, 2019
    16
    花钱
    usdf
    usdf
    Jul 9, 2019
    17
    花大钱
    Windelight
    Windelight
    Jul 9, 2019 via Android❤️1
    18
    一,网络延迟,加钱整买网、买 DNS 解决
    二,硬件反应,加钱买服务器、买 SSD、买交换机解决
    三,软件逻辑,加钱买程序员、少查询、多缓存解决
    starsriver
    starsriver
    Jul 9, 2019 via Android
    19
    毫秒是不可能的,延迟主要发生在网络上面。就算计算机一毫秒处理完了数据,但是传输是个问题:等待、接收报文、应答都需要时间。

    目前能够实现低延迟的只有硬件级别的 api,比如 gpu 和 fpga。
    starsriver
    starsriver
    Jul 9, 2019 via Android
    20
    接上 fpga 的延迟是皮秒级别的。
    pifuant
    pifuant
    Jul 9, 2019
    21
    我去问下我同事, 他号称他前公司的接口效应时间为 0.1 毫秒级
    maichael
    maichael
    Jul 9, 2019
    22
    @ys1992 #6 只要不超过秒就算毫秒级吧,几百毫秒也算毫秒吧。
    arrow8899
    arrow8899
    Jul 9, 2019❤️1
    23
    只要经过公网,基本上不可能,这个是物理定律决定的,1ms * 光速 = 300km,随便跨个城就不行了。
    undefinedList
    undefinedList
    Jul 9, 2019
    24
    排除代码问题,同意楼上的问题:世界加钱可及!
    x86
    x86
    Jul 9, 2019 via iPhone
    25
    最好的优化就是钱
    janxin
    janxin
    Jul 9, 2019
    26
    先说一下几百毫秒算不算呗
    npe
    npe
    Jul 9, 2019 via Android
    27
    e.g. 清除缓存
    alert (清除成功)
    wenzhoou
    wenzhoou
    Jul 9, 2019 via Android
    28
    @janus77 笑死了
    m9rco
    m9rco
    Jul 9, 2019
    29
    哈哈哈哈哈 笑死
    pinews
    pinews
    Jul 9, 2019
    30
    大客户,花钱
    imycc
    imycc
    Jul 9, 2019 via iPhone
    31
    内部服务,走自建的内网,优化好,业务不复杂的情况,请求耗时在 1s 内是可以的。

    普通用户访问的话,分业务本身的耗时跟 IO 的耗时去优化吧,你场景都不说清楚,是要我们自由发挥吗
    tomczhen
    tomczhen
    Jul 9, 2019
    32
    AI+大数据,在客户端发出请求之前就先返回不就可以把响应变成毫秒级了么 :doge:
    xhinliang
    xhinliang
    Jul 9, 2019
    33
    秒杀接口,10ms 内响应没有问题(只有 Redis 访问)。
    但到客户端那边可能就需要多些时间了,毕竟网络延时也是十位数毫秒级的。
    way2create
    way2create
    Jul 9, 2019
    34
    10000ms 就不是 ms 了吗
    blless
    blless
    Jul 9, 2019 via Android
    35
    https 握手就得几百 ms 了…
    salmon5
    salmon5
    Jul 9, 2019
    36
    返回“毫秒级”
    lqzhgood
    lqzhgood
    Jul 9, 2019 via Android
    37
    显示器响应时间不都要几 ms~十几 ms 么
    kizunaai
    kizunaai
    Jul 10, 2019 via iPhone
    38
    如果 1ms 以内的话,就别能走网线光纤了,短波欢迎你。
    如果 10ms 以内的话根据客户端定制线路,(极端例子把服务器放到客户的局域网里)这个只要花钱就行。
    如果 20ms 左右的话只要给机房塞够钱(多地机房多线路),客户端做好线路选择就行。
    laoli123
    laoli123
    Jul 10, 2019
    39
    @yulitian888 这个百兆路由和响应速度没什么关系吧 难道说换成千兆就有质的飞跃吗 关键看响应速度 不能看带宽吧
    yulitian888
    yulitian888
    Jul 10, 2019
    40
    @xiaobai987 百兆的效果属于肉眼可见差异水平,千兆就属于肉眼不可见了
    wuchujie
    wuchujie
    Jul 10, 2019
    41
    @guokeke 优秀啊 兄 dei
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4057 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 161ms · UTC 05:35 · PVG 13:35 · LAX 21:35 · JFK 00:35
    ♥ Do have faith in what you're doing.