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

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

BTW ,@wander2008 说的单线程跟这事情并没啥关系
wander2008
2016-07-25 07:38:19 +08:00
@fatpa …。别这么急着下结论哦。只是说明咱思考不是在一个层次。
phithon
2016-07-25 13:46:54 +08:00
@fatpa 对,就是你这个意思。。解决方法就是按 @Mirana 的方法做,换持久化的队列?
Mirana
2016-08-01 17:51:05 +08:00
@phithon 短期的高并发可以这么搞,一直这么高的话是消费者的消费速度跟不上,磁盘很快就被写满了。
这种情况下可以考虑增加消费者,比如起多个实例增加系统的吞吐。
fatpa
2016-08-17 11:38:12 +08:00
@wander2008 那你思考的层面是?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/294596

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX