V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
q1angch0u
V2EX  ›  问与答

要求项目所有接口要求同时支持同步和异步调用

  •  
  •   q1angch0u · 2023-01-31 14:36:26 +08:00 · 2330 次点击
    这是一个创建于 666 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大佬们怎么看......

    第 1 条附言  ·  2023-01-31 17:12:08 +08:00
    我的意思是大佬们也是这么想的嘛……有必要所有接口(包括登陆、注册)都实现异步的情况嘛……
    第 2 条附言  ·  2023-01-31 18:51:51 +08:00
    以前在某大厂实习过,下行接口基本都接了 mesh ,所以都是同步的;上行接口会通过具体的功能区分,比如转码等高耗时操作会比较费计算资源,考虑到堆积、降级等措施才不得已用异步接口的。现在这公司的 leader 的思路我是真的有点儿无法理解…所以想听听大家的看法。
    28 条回复    2023-02-01 09:19:28 +08:00
    guisheng
        1
    guisheng  
       2023-01-31 14:43:45 +08:00
    同步接口不变,异步统一使用消息队列接收处理。
    hhjswf
        2
    hhjswf  
       2023-01-31 16:25:44 +08:00 via Android
    异步调用是啥意思?接口结果以回调的方式返回嘛
    q1angch0u
        3
    q1angch0u  
    OP
       2023-01-31 17:11:15 +08:00
    @hhjswf 目前还不是回调,调用方得依靠查询接口实现异步任务结果、进度的查询。
    vagusss
        4
    vagusss  
       2023-01-31 17:17:44 +08:00
    为啥这么干
    yeqiu
        5
    yeqiu  
       2023-01-31 17:20:42 +08:00
    获取数据也异步吗?
    这太可怕了吧
    RightHand
        6
    RightHand  
       2023-01-31 17:23:58 +08:00 via Android
    异步首先是回调地狱,务必使用自带协程的语法的语言
    zeonll
        7
    zeonll  
       2023-01-31 17:24:24 +08:00
    背景是什么。不说背景说需求统统刷流氓
    ffw5b7
        8
    ffw5b7  
       2023-01-31 17:24:43 +08:00 via Android
    进度?各个业务不一样,那就是日志 /链路追踪咯?
    sleeepyy
        9
    sleeepyy  
       2023-01-31 17:26:22 +08:00
    接口全都写异步的,需要同步的时候就 block_on(api)
    nothingistrue
        10
    nothingistrue  
       2023-01-31 17:39:54 +08:00   ❤️ 1
    要求所有接口都异步还说得过去,要求同时支持同步和异步,这脑袋是被驴踢了。

    同步还是异步,要综合考虑业务要求和性能要求的,都支持没有技术性错误,但是开发成本太高了,一般都是单接口二选一。总体上可能会是部分接口同步,部分接口异步。

    所有接口都异步,也是不现实的,这样被调用方是方便了,调用方就要吃屎了。
    nothingistrue
        11
    nothingistrue  
       2023-01-31 17:43:31 +08:00
    @RightHand #6
    @ffw5b7 #8
    @sleeepyy #9

    这既然说得是接口,那就是跨系统的远程异步,不是客户端或语言内部的异步调用,这玩意不管是回调还是 wait 转同步,都难度更大。
    q1angch0u
        12
    q1angch0u  
    OP
       2023-01-31 18:42:58 +08:00 via iPhone
    @zeonll 没有啥背景,平台的功能不重要,我就想讨论 [所有接口必须同时支持异步 /同步调用] 这件事儿…
    q1angch0u
        13
    q1angch0u  
    OP
       2023-01-31 18:43:45 +08:00 via iPhone
    @sleeepyy #9 我目前就是这么实现的……
    q1angch0u
        14
    q1angch0u  
    OP
       2023-01-31 18:44:47 +08:00 via iPhone
    @yeqiu 是的,我也觉得很可怕……
    @vagusss #4 不知道,我没有很好的点去反驳 leader ,所以来这问问各位的看法。
    IvanLi127
        15
    IvanLi127  
       2023-01-31 19:42:41 +08:00 via Android
    这事在某些情况下确实有必要,这样就能 既要又要 了
    q1angch0u
        16
    q1angch0u  
    OP
       2023-01-31 19:49:52 +08:00 via iPhone
    @IvanLi127 比如有一个获取用户信息的接口,我实在想不通为何需要异步获取…能请教一下吗?
    jones2000
        17
    jones2000  
       2023-01-31 23:14:47 +08:00
    说实话, 没什么好讨论的, 根据 leader 的意思搞就行了,反正你不做整体构架, 出了问题有人背锅,垒代码就是了。
    GeruzoniAnsasu
        18
    GeruzoniAnsasu  
       2023-01-31 23:27:08 +08:00
    你有没有想过这样一个怼点:

    所有的同步调用都可以在调用方而不是接口处实现。
    IvanLi127
        19
    IvanLi127  
       2023-02-01 01:23:58 +08:00 via Android
    @q1angch0u 异步接口慢的话,至少能少吃点 cpu 吧。
    jink2018us
        20
    jink2018us  
       2023-02-01 01:32:46 +08:00
    同步方法 1 个=异步方法 3 个(发起,回调 /轮询,取消)
    让老板再招 2 个人或工期 X3
    为屎山添砖加瓦,咱不劳心
    k9982874
        21
    k9982874  
       2023-02-01 01:39:51 +08:00 via Android
    你们公司主程脑袋被门夹了吗?
    unnamedhao
        22
    unnamedhao  
       2023-02-01 07:39:12 +08:00 via iPhone
    让你干啥你干啥
    q1angch0u
        23
    q1angch0u  
    OP
       2023-02-01 08:58:31 +08:00 via iPhone
    @GeruzoniAnsasu #16 这句话没太理解,能否辛苦详细说说。
    q1angch0u
        24
    q1angch0u  
    OP
       2023-02-01 09:10:35 +08:00 via iPhone
    @IvanLi127 #19 我这是个单体应用,获取用户信息就是查一句 sql ,这资源消耗应该不会比查询+轮训大吧?
    lyxeno
        25
    lyxeno  
       2023-02-01 09:11:05 +08:00
    只实现异步就好了。
    调用方自己等待异步结果,那不就是同步了吗?

    不过有些接口做成异步毫无意义...徒增开发成本
    hoopan
        26
    hoopan  
       2023-02-01 09:16:06 +08:00
    一般接口都是同步,只在特殊要求下才异步(性能、并发、请求时间)。全部异步不太可能,跟同事沟通下公司领导的真实意图。
    q1angch0u
        27
    q1angch0u  
    OP
       2023-02-01 09:16:42 +08:00 via iPhone
    @lyxeno 目前就是这么实现的,诶……
    q1angch0u
        28
    q1angch0u  
    OP
       2023-02-01 09:19:28 +08:00 via iPhone
    @hoopan 这 leader 甚至能直接不用框架的路由,然后自己实现一套,这件事上和他没什么可以交流的……
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3131 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 14:05 · PVG 22:05 · LAX 06:05 · JFK 09:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.