nodejs 天生异步 为什么还需要异步队列 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
meteor957
0D

nodejs 天生异步 为什么还需要异步队列

  •  
  •   meteor957 2020 年 8 月 18 日 4845 次点击
    这是一个创建于 2076 天前的主题,其中的信息可能已经有所发展或是发生改变。

    发送短信,邮件这些耗时任务,本来就是异步请求,不会阻塞后面的逻辑。为什么还需要 redis 队列来处理。

    11 条回复    2020-09-15 15:50:46 +08:00
    MrTreasure
        1
    MrTreasure  
       2020 年 8 月 18 日   1
    因为你不能保证你的系统全是 nodejs 服务,实际的情况是生产中 nodejs 只是很小一部分,大部分还是 java 做服务层

    然后还需要考虑量级的场景,虽然是异步,但是 qps 一上去,一样能把 nodejs 服务器打垮。这个时候就需要 消息队列来承担这种量级的请求
    des
        2
    des  
       2020 年 8 月 18 日   1
    因为需要持久化,以及服务平台化的需求
    一旦你的 node 挂掉了,这些存在内存里面的队列都会没了
    另外现在流行服务平台化,专用的任务用专用服务去做
    meteor957
        3
    meteor957  
    OP
       2020 年 8 月 18 日
    感谢楼上几位大佬的回答
    xcstream
        4
    xcstream  
       2020 年 8 月 18 日   1
    队列用处是超过 qps 的请求缓存起来慢慢来做
    和语言无关。
    simple2025
        5
    simple2025  
       2020 年 8 月 19 日   1
    就是耗时太长,不友好,假如发个邮件要 5s, 那不用队列的话,就是要等待 5s, 如果用异步队列的,api 的相应可能是几十 ms 毫秒而已
    meteor957
        6
    meteor957  
    OP
       2020 年 8 月 19 日
    @chenqh 发邮件这种异步请求不需要等待啊,后面直接返回就行了,除非 await 改成同步的写法。
    wanguorui123
        7
    wanguorui123  
       2020 年 8 月 19 日   1
    需要持久化吧,nodejs 的队列万一挂掉就 GG 了。
    wangritian
        8
    wangritian  
       2020 年 8 月 19 日   1
    我觉得不需要 redis,前提是你的应用服务器做好柔性重启,关闭前执行完内存中遗留的任务
    队列的作用是削峰,应对突发流量,如果常时流量就很大,你需要的是提高硬件 /改善架构,而不是靠队列解决,因为处理不过来在队列里也会堆积
    April5
        9
    April5  
       2020 年 8 月 19 日   1
    松耦合,例如你发 http 请求,这在服务层面其实是同步的,需要通信双方都在场,而异步队列就不需要了
    libook
        10
    libook  
       2020 年 8 月 19 日
    没有需求就不要用,建议避免过度设计。

    如果你现在有个问题,需要依赖 Redis 来帮忙解决,这时候再引入 Redis 就好了。

    队列能实现的是削峰填谷和松散耦合的效果,比如你的负载是时而 30%、时而 130%,这样高负载的时候你的服务就卡(有可能引发雪崩),低负载的时候机器空转浪费钱,如果业务上能接受异步处理的话,就全塞到队列里,然后消费者按照正好 100%的负载匀速消费,这样可以达到资源的最大利用。

    还是那句话,没有需要不用硬上。
    haijianyang
        11
    haijianyang  
       2020 年 9 月 15 日
    两码事
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1051 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 50ms UTC 18:23 PVG 02:23 LAX 11:23 JFK 14:23
    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