要求项目所有接口要求同时支持同步和异步调用 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ryanbuu
V2EX    问与答

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

  •  
  •   ryanbuu 2023 年 1 月 31 日 2939 次点击
    这是一个创建于 1122 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    所有接口都异步,也是不现实的,这样被调用方是方便了,调用方就要吃屎了。
    nothingistrue
        11
    nothingistrue  
       2023 年 1 月 31 日
    @RightHand #6
    @ffw5b7 #8
    @sleeepyy #9

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

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

    不过有些接口做成异步毫无意义...徒增开发成本
    hoopan
        26
    hoopan  
       2023 年 2 月 1 日
    一般接口都是同步,只在特殊要求下才异步(性能、并发、请求时间)。全部异步不太可能,跟同事沟通下公司领导的真实意图。
    ryanbuu
        27
    ryanbuu  
    OP
       2023 年 2 月 1 日 via iPhone
    @lyxeno 目前就是这么实现的,诶……
    ryanbuu
        28
    ryanbuu  
    OP
       2023 年 2 月 1 日 via iPhone
    @hoopan 这 leader 甚至能直接不用框架的路由,然后自己实现一套,这件事上和他没什么可以交流的……
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     981 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 34ms UTC 22:54 PVG 06:54 LAX 14:54 JFK 17:54
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86