使用Kafka和NodeJS进行实时通知

时间:2015-10-14 16:05:20

标签: node.js websocket notifications apache-kafka consumer

在我的项目中,我必须设计一个实时通知系统。我把它做成如下图所示。

real time notification with kafka and redis

你可以看到我使用Kafka作为队列消息传递系统,NodeJS使用了构建Websocket服务器和Kafka消费者。 制作人将收集通知数据并将其推送到Kafka。消费者将从Kafka读取和处理数据,并通过websocket将其推送到客户端,如果该数据属于该用户。

通过上面的架构师,每个在线用户都将打开一个Websocket连接并创建一个新的Consumer。这意味着如果在线有100K用户,我们必须有100K消费者。

所以我的问题是上面的设计是一个实时通知系统的正确设计?你有什么不同的想法吗?如果我有100K消费者,有什么问题吗?

EDITED

不应该打开太多的消费者。它能够与消费者和websockets一起使用

1 个答案:

答案 0 :(得分:1)

您的设计是正确的,如果您希望始终与您的每个客户建立联系,那么您必须保留与客户数量相同的client-websocket数量;但是对于连接的客户而言,消费者并不需要增加;因为它们可以在不同的client-websockets之间共享。

这取决于您的应用程序以及您希望如何处理它。