关于“长时间计算”的请求方式的解决方案。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
t298
V2EX    科技

关于“长时间计算”的请求方式的解决方案。

  •  
  •   t298 152 天前 1561 次点击
    这是一个创建于 152 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我用词可能不太准确,具体情况就是,我们业务会设计到调用某些模型计算,这些模型有的是 java ,或者 python 源码的,有的是 exe ,甚至是 linux 下的可执行程序,总值千奇百怪的。我们只要是组装参数丢给模型,然后模型会经过一段时间返回一些结果,有可能是文件,有可能就是一个数组,问题就出现在这个时间上。

    刚开始涉及到的模型是 java 的,计算时间也短,十来秒就结束了,我们采用的方案就是直接接口调用,等待响应就好了。

    过了一段时间,涉及到的模型计算时间在半个小时晚上,就涉及到了数据的返回,已经这次计算的时候还要判断上次计算是否结束(因为模型都是只能一次跑一个,没办法多线程运行。)计算时间长了过后,等待响应肯定是不行了,我们又采用了 grpc 的连接。又因为这个的参数组装加实际使用肯不方便,用着用着又搁置了。

    现在我们采用的方案就是:设置全局变量,标志模型是否运行状态,还是调用 http 接口,本次计算后,不会等待响应,模型那边封装个通知接口,模型计算完成之后调用业务的通知接口返回参数或者文件,完成一次计算。

    各位经验丰富的彦祖有什么更好,更合适一些的建议吗?感激不尽。

    9 条回复    2025-05-12 18:50:01 +08:00
    BingoXuan
        1
    BingoXuan  
       152 天前
    弄个简单的消息队列?
    otakustay
        2
    otakustay  
       152 天前
    每次计算分配一个任务 id ,计算端把自己进度以 id 为 key 入库,然后用 id 轮询状态?轮询还是 websocket 还是啥的就无所谓了,变成 id 以后都是简单逻辑
    cat
        3
    cat  
       152 天前
    消息队列+轮询+完成回调,搞了好几个这种了
    javalaw2010
        4
    javalaw2010  
       152 天前
    二楼的方案可行,到这一步的话,其实你们架构上要调整一下了,模型侧要搞个平台之类的,然后对外提供统一的接口层,提供同步和异步两种调用方式,速度快的用同步,速度慢的用异步,异步的话就用 submit/query 的方式实现,简单一点的话也可以搞 SSE 实现。
    leonhao
        5
    leonhao  
       152 天前
    异步批处理作业
    adgfr32
        6
    adgfr32  
       152 天前 via Android
    异步任务加轮询,最好有一个服务或者程序能把这些不同的模型的入参出参整理一下,集中干脏活,提供统一的 API 出去
    AlexJ8175
        7
    AlexJ8175  
       152 天前
    双向队列
    kas0yo
        8
    kas0yo  
       152 天前
    直接接 slurm ,算完发邮件
    itechify
        9
    itechify  
    PRO
       152 天前
    异步 hook 机制
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3572 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 00:12 PVG 08:12 LAX 17:12 JFK 20:12
    Do have faith in what you're doing.
    ubao 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