V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
phithon
V2EX  ›  Node.js

node+redis 订阅并发量太大会不会出问题

  •  
  •   phithon · 2016-07-24 19:24:56 +08:00 · 5306 次点击
    这是一个创建于 3055 天前的主题,其中的信息可能已经有所发展或是发生改变。
    redis 的发布 /订阅+node 接收的时候,因为接收到数据后要执行多个任务(比如执行 http 请求、存取数据库),导致发布订阅的速度大于接收订阅的速度。并发量过大,比如一秒有上百个订阅进入 redis , node 这边会实时全部接收么?
    要不要加个任务队列,接收到订阅后把任务放任务队列里。。但感觉这样是不是有点冗余, redis 的订阅实际上就已经类似于一个任务队列了?
    7 条回复    2016-08-17 11:38:12 +08:00
    Mirana
        1
    Mirana  
       2016-07-24 19:47:32 +08:00   ❤️ 1
    redis pubsub 是没有持久化的队列,短时间内请求多问题不大,如果并发一直很大 可以考虑在中间加个 kafka 这种带持久化的队列。
    wander2008
        2
    wander2008  
       2016-07-25 00:09:09 +08:00 via iPhone
    redis 是单线程的
    fatpa
        3
    fatpa  
       2016-07-25 02:29:04 +08:00   ❤️ 1
    sub 是一个个 listen 的,所以 node 处理慢了就会导致 redis 消息队列堆积,内存占用过多

    BTW ,@wander2008 说的单线程跟这事情并没啥关系
    wander2008
        4
    wander2008  
       2016-07-25 07:38:19 +08:00 via iPhone
    @fatpa …。别这么急着下结论哦。只是说明咱思考不是在一个层次。
    phithon
        5
    phithon  
    OP
       2016-07-25 13:46:54 +08:00
    @fatpa 对,就是你这个意思。。解决方法就是按 @Mirana 的方法做,换持久化的队列?
    Mirana
        6
    Mirana  
       2016-08-01 17:51:05 +08:00
    @phithon 短期的高并发可以这么搞,一直这么高的话是消费者的消费速度跟不上,磁盘很快就被写满了。
    这种情况下可以考虑增加消费者,比如起多个实例增加系统的吞吐。
    fatpa
        7
    fatpa  
       2016-08-17 11:38:12 +08:00
    @wander2008 那你思考的层面是?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1215 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 18:17 · PVG 02:17 · LAX 10:17 · JFK 13:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.